2014-10-25 3 views
-1

프로그램을 컴파일 할 때 문제가 있으며 그 이유를 모르겠습니다. 도서관 문제라고 생각하지만 잘 모르겠습니다. Google에서 검색했지만 문제를 해결할 수 없습니다.C에서 컴파일 문제

명령 행 :

 
/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 

편집 : 내 메이크 그것은 일종의 발견 링커가 당신을 말하고

#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 

이 내 오류 메시지가

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

입니다 그것이 찾고 있던 상징, 하지만 도서관과 연결하도록 요청한 것은 아닙니다. 따라서이 라이브러리를 명령 줄에 추가해야합니다. libm에 대한 플래그는 -lm

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

이 (당신은 명령 줄에 필요한 객체 후 라이브러리를 넣어.)는 인수의

+0

CFLAGS에 -lm 플래그를 추가하려고했지만 아무것도 변경되지 않았습니다. 내 질문에 내 메이크 파일을 추가했습니다. – Jeajea

+0

CLAGS의 끝은 적절한 장소가 아닙니다. LDFLAGS의 끝이 있어야합니다. 그래도 작동하지 않으면 편집 된 makefile과 업데이트 된 정확한 컴파일러 출력을 게시하십시오. – Mat

+0

답변 해 주셔서 감사합니다. – Jeajea

0

순서 연결이 중요 할 때 - 당신이 AFTER 라이브러리를 나열 할 필요 오브젝트 파일. 시도 :

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