множественные ошибки определения при использовании makefile

0

Я пытаюсь создать свой проект со следующим make файлом:

CC=g++
in=main.cpp
out=analyser
series=Series.o
episode=Episode.o
curlandclean=src/htmlfunctions/curlandclean.cpp
pugilib=src/pugixml/src/pugixml.o
curllib=src/libcurl/src/curl
tidylib=src/tidy/tidy-html5-master/lib/libtidy.a
CFLAGS=-c 
C11FLAG=-std=c++11
MTFLAG=-fopenmp -lpthread

$(out): analyser

$(out):$(series) $(episode) curlandclean.o $(curllib) $(tidylib) $(pugilib)
        $(CC) $(in) $(series) $(episode) curlandclean.o $(curllib) $(tidylib)         $(pugilib) $(C11FLAG) -fopenmp -lpthread -o $(out)

curlandclean.o:$(curlandclean)
    $(CC) $(CFLAGS) $(curlandclean)

$(series):src/Series.cpp
    $(CC) $(CFLAGS) $(C11FLAG) $(MTFLAG) src/Series.cpp

$(episode):src/Episode.cpp
    $(CC) $(CFLAGS) src/Episode.cpp

$(curllib):
    cd src/libcurl && ./configure --disable-shared
    cd src/libcurl && $(MAKE)

$(pugilib):
    cd src/pugixml/src && $(CC) $(CFLAGS) pugixml.cpp

$(tidylib):
    cd src/tidy/tidy-html5-master && $(MAKE)

clean: 
    rm *.o

Он доходит до конечной стадии компоновки, но поставляется с множеством "ошибок с несколькими определениями":

src/libcurl/src/curl: In function '_fini':
(.fini+0x0): multiple definition of '_fini'

src/libcurl/src/curl: In function 'data_start':
(.data+0x0): multiple definition of '__data_start'
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_info): relocation 0   has invalid symbol index 11

Я не уверен, что я сделал неправильно, поскольку я скомпилировал свои промежуточные файлы с флагом вывода -c.

Теги:
makefile

1 ответ

0
Лучший ответ

Основываясь на сообщении об ошибке, я бы сказал, что это:

curllib=src/libcurl/src/curl

это программа, а не библиотека. libcurl.a это не должно быть что-то вроде libcurl.a?

  • 0
    Не могу поверить, что я пропустил это! Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню