문제 하나 해결했는데, 이게 정확한 것인지 공유하고 확인하고 싶습니다
글쓴이: owcred601 / 작성시간: 금, 2016/10/07 - 11:52오전
외부 라이브러리 A
실행 프로그램 B
B에서 A를 Link 하는 과정에서 undefined reference error 발생
nm 으로 라이브러리 A 확인 결과 해당 함수가 포함된 것 확인.
Include 및 순서 등등을 변경해봐도 해결되지 않음.
------
해결 방법 :
라이브러리 A가 물고 있는 Flag(제 경우 두 개) -g -Wl,--gcsections 를 실행파일의 Flag 에도 추가.
해결 됨....
원래 스태틱 라이브러리나 쉐어드 라이브러리를 실행파일에서 참조할 때,
지금처럼 라이브러리에서 사용하는 Flag도 같이 추가해줘야 되나요??
오전 3시간을 날렸는데, 이걸로 해결되네요;;
Forums:
언어가 뭔지 모르겠지만..
언어가 뭔지 모르겠지만..
C의 경우 extern으로 헤더에 정의해서 사용할 때
소스에도 같이 extern으로 정의해야 되지 않나여?
아니에요
아니에요
extern은 함수의 declaration과
extern은 함수의 declaration과(prototype) 동일한 의미 입니다.
즉, 일반적으로 소스파일에는 있으면 안되며 모든 소스파일을 통틀어 하나만 정의되어야 합니다.
아.. 제가 헷갈리게 만들었습니다.
언어는 CPP로 되어있습니다.
언어랑 상관없이 Makefile 로 Compile 하고 링크거는 문제 해결하는 과정에서 발견했습니다.
얼마 전에는 회사 선배께서 사용하지 않는 공용 라이브러리를 참조했더니 컴파일이 안되는 경우도 있더군요.
앞으로는 사용하는 라이브러리만 링크하려고 합니다.
댓글 달기