【发布时间】:2015-07-22 18:30:13
【问题描述】:
我试图使用 mysql c api 在 linux 上构建我的应用程序,并在链接阶段收到此错误,它在 Windows 上运行良好。请帮忙,谢谢!
错误信息:
/bin/ld: myapp.so : version node not found for symbol mysql_select_db@libmysqlclient_16
/bin/ld: failed to set dynamic section sizes: Bad value
操作系统:CentOS 7,64 位,(虚拟机上的 VM)
Mysql:5.6.24(社区版,通过yum安装)
.bashrc 文件
export LIBMYSQL_INCLUDE_DIR=/usr/include/mysql
export LIBMYSQL_LIBRARY=/usr/lib64/mysql
export LD_LIBRARY_PATH=/usr/lib64/mysql:$LD_LIBRARY_PATH
cmake文件:(根据环境变量设置变量)
FILE(GLOB SRC_MYAPP myapp/*.c myapp/*.h)
INCLUDE_DIRECTORIES(${LIBMYSQL_INCLUDE_DIR})
ADD_LIBRARY(myapp ${SRC_MYAPP})
IF (MSVC_IDE)
TARGET_LINK_LIBRARIES(myapp ${LIBMYSQL_LIBRARY}/libmysql)
ELSE ()
TARGET_LINK_LIBRARIES(myapp ${LIBMYSQL_LIBRARY}/libmysqlclient_r.a)
ENDIF ()
【问题讨论】:
-
为什么要链接静态 libmysqlclient_r 库?
-
我应该在 cmake 文件中链接哪个库?
-
我想你应该在
add_library之前添加link_directories(/usr/lib64/mysql),然后是target_link_libraries(myapp mysqlclient_r)
标签: mysql linux cmake centos libmysql