You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake编译报错:无法找到mysqlclient.so库,求助解决

解决ld无法找到-lmysqlclient的问题

问题根源

你的配置存在几个关键错误:

  • 路径缺少根目录前缀:所有路径都写成了usr/lib64/mysql,正确的绝对路径应该是/usr/lib64/mysql(开头的/不能省略)
  • 头文件目录指向错误:/usr/lib64/mysql是库文件目录,MySQL头文件通常存放在/usr/include/mysql
  • 未安装MySQL开发包:sudo yum install mysql仅安装了客户端程序,缺少编译所需的开发库和头文件

修复步骤

  1. 安装MySQL开发依赖
    执行以下命令安装CentOS/RHEL系统的MySQL开发包:

    sudo yum install mysql-devel
    
  2. 修正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)
    
  3. 重新编译项目
    清理原有构建目录后重新执行编译流程:

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 17:13:33