【问题标题】:version node not found for symbol mysql_select_db@libmysqlclient_16找不到符号 mysql_select_db@libmysqlclient_16 的版本节点
【发布时间】: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


【解决方案1】:

将@hank 的评论作为答案

我想你应该在 add_library 之前添加 link_directories(/usr/lib64/mysql) 然后 target_link_libraries(myapp mysqlclient_r) – 汉克 5 月 12 日 12:50

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2016-01-20
    • 2022-12-12
    • 2021-08-04
    • 2017-08-14
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多