undefined reference 에러.. 인데..
make 시, 다음과 같은 구문이 나오는데요
./src-gat/notes_conn.o(.text+0xab15): In function `CCon::GetData()':
: undefined reference to `WorkPackager_new()'
collect2: ld returned 1 exit status
일단 undefined reference 에러는 여기 찾아 보니까 링크시 못찾는걸로 나오는데,
제가 했던것을 말씀드리면,
libfasoopackagerC.so(고객사에서 받은 so 파일, 이것만 받았음)
위의 파일을 현재 make 한 프로그램의 lib/linux/drm 디렉토리에 두었습니다.
그리고 나서
DIR = ./lib/linux
CFLAGS += -I$(DIR)/drm
LFLAGS += -L$(DIR)/drm
LIBS += -lfasoopackagerC
이렇게 추가한후
CC = gcc
@$(CC) $(LFLAGS) -o $(OBINDIR)/$@ $(OBJS) $(LIBS)
make를 수행하였는데 위의 구문에서 링크 에러가 나네요.
근데 제가 알기로는(잘 모르지만) libfasoopackagerC.so 를 /usr/lib 가 아닌 특정 위치에 둘거면
-L로 명시해 두고 링크할 라이브러리를 -l 에 앞에 lib 랑 so 빼고 -lfasoopackagerC 라고 입력해 주면
되는거라고 알고 있는데 별도의 다른 작업을 해 주어야 하나요?
nm -D 커멘드로 심볼 목록 뽑아서
nm -D 커멘드로 심볼 목록 뽑아서 WorkPackager_new 를 찾아보세요.
T 로 마크되어 있어야 합니다.
링크 할 라이브러리를 못 찾은 경우엔 다른 에러 메시지가 나옵니다.
라이브러리는 링크 되었습니다.
라이브러리링크는 되었습니다. 안되엇다면 윗글 메세지 처럼 나올거구요..
라이브러리 파일이 libfasoopackagerC.so 일 경우에
gcc -main.c -o exe -lfasoopackagerC 맞게 주신거 맞고요..
에러메세지가 함수관련 메세지로 보아
소스문제일 가능성이 높습니다.
./src-gat/notes_conn.o(.text+0xab15): In function `CCon::GetData()':
: undefined reference to `WorkPackager_new()'
collect2: ld returned 1 exit status
*근데 CCon::GetData() 요고 CPP 아닌가요?
cpp 맞습니다.
cpp 가 맞습니다만..
댓글 달기