CMake编译报错:无法找到mysqlclient.so库,求助解决
解决ld无法找到-lmysqlclient的问题
问题根源
你的配置存在几个关键错误:
- 路径缺少根目录前缀:所有路径都写成了
usr/lib64/mysql,正确的绝对路径应该是/usr/lib64/mysql(开头的/不能省略) - 头文件目录指向错误:
/usr/lib64/mysql是库文件目录,MySQL头文件通常存放在/usr/include/mysql - 未安装MySQL开发包:
sudo yum install mysql仅安装了客户端程序,缺少编译所需的开发库和头文件
修复步骤
安装MySQL开发依赖
执行以下命令安装CentOS/RHEL系统的MySQL开发包:sudo yum install mysql-devel修正CMakeLists.txt配置
替换原有配置为以下内容:# 指定MySQL头文件所在目录 target_include_directories(main PUBLIC /usr/include/mysql) # 指定库文件搜索目录 target_link_directories(main PUBLIC /usr/lib64/mysql) # 链接mysqlclient库 target_link_libraries(main mysqlclient)也可以直接指定库的绝对路径,避免目录搜索问题:
target_include_directories(main PUBLIC /usr/include/mysql) target_link_libraries(main /usr/lib64/mysql/libmysqlclient.so)重新编译项目
清理原有构建目录后重新执行编译流程:rm -rf build && mkdir build && cd build cmake .. && make
额外说明
- 复制库文件到
/usr/bin是错误操作,系统动态链接器默认搜索/usr/lib64、/usr/lib等目录,而非/usr/bin - 安装
mysql-devel后如果出现mysqlConfig.cmake,也可以改用更规范的find_package方式:find_package(MySQL REQUIRED) target_include_directories(main PUBLIC ${MYSQL_INCLUDE_DIR}) target_link_libraries(main ${MYSQL_LIBRARY})
内容的提问来源于stack exchange,提问作者ri yo
相关产品推荐
相关产品推荐

