컴파일할때 소스파일 이름을 적어주는 위치에 따라 심볼레퍼런스 에러가 발생합니다.
# gcc -I/usr/local/mysql/include/mysql -o test a.c -L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lnsl -lsocker -lm
이렇게 컴파일하면 에러 없이 컴파일이 잘됩니다.
그런데 소스파일 이름을 맨뒤로 보내면 바로 에러가 나는군요..
# gcc -I/usr/local/mysql/include/mysql -L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lnsl -lsocker -lm -o test a.c
Undefined first referenced
symbol in file
mysql_fetch_row a.o
mysql_query a.o
mysql_error a.o
mysql_close a.o
mysql_store_result a.o
mysql_init a.o
mysql_real_connect a.o
mysql_field_count a.o
ld: fatal: Symbol referencing errors. No output written to a.out
autotools를 사용하고 있는데 마지막 링킹 단계에서 인자의 순서가 전자처럼 들어가서 에러가 납니다. automake 메뉴얼을 아무리 뒤져봐도 관련된 자료는 못찾겠고.. 이런 경우엔 어떻게 해결을 해야하나요?
에고.. -l 값은
에고.. -l 값은 LDFLAGS가 아니라 LIBS로 넘겨야 하는거군요.. autotools에서 LIBS를 사용해서 값을 넘겨주니 object file 뒤로 붙어서 컴파일 잘 됩니다. :-)
======================
BLOG : http://superkkt.com
======================
BLOG : http://superkkt.com
댓글 달기