2014-10-25 21 views
-1

У меня проблема при компиляции моей программы, и я не знаю почему. Я думаю, что это проблема библиотеки, но я не уверен. Я искал в google, но я не мог решить проблему.Проблемы с компиляцией в C

Командная строка:

clang `pkg-config --libs opencv ` main.o image_handle.o image_detection.o neural_network.o -o main 

Это мое сообщение об ошибке:

 
/usr/bin/ld: neural_network.o: undefined reference to symbol '[email protected]@GLIBC_2.2.5' 
//lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [main] Error 1 

EDIT: мой Makefile

#For the compilation 
CC=clang 

CPPFLAGS=`pkg-config --cflags opencv` 
CFLAGS= -Wall -Wextra -Werror -std=c99 -O2 
LDFLAGS=`pkg-config --libs opencv` 

SRC= main.c image_handle.c image_detection.c neural_network.c 
OBJ= ${SRC:.c=.o} 

all: main clean 

main: ${OBJ} 

clean: 
    rm -f *~ *.o 

#END 
+2

Не могли бы вы высказать свой код? –

+2

@onegrx: как это поможет? – Mat

+0

Мой код довольно длинный. Но он компилируется на компьютере моего коллеги, поэтому я не думаю, что код вам поможет. Сообщение об ошибке начало появляться, когда мы начали использовать Jeajea

ответ

2
/lib/x86_64-linux-gnu/libm.so.6: error adding symbols: 
           DSO missing from command line 

Вот линкер говорил вам, что-то нашел символ, который он искал, но не в библиотеке, с которой вы попросили ее связать. Поэтому вы должны добавить эту библиотеку в свою командную строку. Флаг для libm является -lm

clang main.o image_handle.o image_detection.o neural_network.o \ 
     `pkg-config --libs opencv ` -lm -o main 

(Вы кладете библиотеки после того, как объекты, которые требуют их в командной строке.)

+0

Я попытался добавить флаг -lm в CFLAGS, но ничего не изменилось. Я добавил свой make-файл к моему вопросу. – Jeajea

+0

Конец CLAGS - неправильное место. Конец LDFLAGS должен быть. Если он по-прежнему не работает, опубликуйте отредактированный файл makefile и обновленный, точный вывод компилятора. – Mat

+0

Благодарим вас за ответ – Jeajea

0

порядок аргументов при компоновке важно - вам нужно перечислить библиотеки ПОСЛЕ объектных файлов. Попытка:

clang main.o image_handle.o image_detection.o neural_network.o -o main `pkg-config --libs opencv ` 
Смежные вопросы