2013-10-21 2 views
1

MySQL C++ 커넥터 라이브러리를 사용하여 다소 간단한 코드를 컴파일하려고합니다. 내 응용 프로그램에 라이브러리를 정적으로 연결하고 있습니다. 나는이 프로그램을 컴파일하려면이 명령을 실행할 때MySQL C++ 커넥터를 정적으로 연결할 수 없습니다.

g++ "./source/main.cpp" -std=c++11 -m64 -static -pthread -lmysqlcppconn -lboost_system -lboost_filesystem -lfastcgipp -lboost_thread -lboost_date_time -o "/var/www/index.fcgi" 

그러나, 나는 undefined reference to ... 오류의 수백 왼쪽입니다. 몇 가지 예 :

/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libmysqlcppconn.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::affected_rows(st_mysql*)': 
(.text+0x164): undefined reference to `mysql_affected_rows' 
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libmysqlcppconn.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::autocommit(st_mysql*, char)': 
(.text+0x18d): undefined reference to `mysql_autocommit' 
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libmysqlcppconn.a(mysql_client_api.cpp.o): In function `sql::mysql::NativeAPI::LibmysqlStaticProxy::close(st_mysql*)': 
(.text+0x1ac): undefined reference to `mysql_close' 
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 
collect2: error: ld returned 1 exit status 

라이브러리를 동적으로 링크하면 모든 것이 정상적으로 작동합니다.

이 라이브러리를 정적으로 어떻게 링크합니까?

답변

4

정적으로 링크 중이므로 간접적으로 사용하는 모든 라이브러리를 참조해야하지만 동적으로 링크 할 때는 필요하지 않습니다.

이 정의되지 않은 함수는 C MySQL API에 있으므로, -lmysqlclient

를 추가해야합니다.
관련 문제