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

CMake配置MySQL Connector/C++8.0 JDBC找不到MySQL Client报错求助

报错根因
  • Ubuntu 源里的mysql-client包仅包含mysql命令行等运行时工具,不提供编译依赖的头文件、链接库开发文件,这是触发该报错的最常见原因。
  • MySQL Connector/C++ 8.0.29 的legacy JDBC模块强依赖libmysqlclient C客户端库作为底层通信实现,其自带的DepFindMySQL.cmake查找逻辑未适配Ubuntu的multiarch目录规范,即便安装了开发依赖也可能出现路径探测失败。
  • 版本兼容无需担心:8.0.x系列的Connector/C++ legacy API可正常对接5.7版本的libmysqlclient,不存在版本不匹配问题,无需升级系统自带的MySQL客户端。
解决步骤
  1. 先安装缺失的编译依赖:
sudo apt update
sudo apt install -y libmysqlclient-dev

安装完成后执行以下命令校验文件是否就位,正常情况下会输出对应文件路径:

# 校验头文件
ls /usr/include/mysql/mysql.h
# 校验动态库
ls /usr/lib/x86_64-linux-gnu/libmysqlclient.so

如果是ARM架构设备,将路径中的x86_64-linux-gnu替换为aarch64-linux-gnu即可。

  1. 回滚你之前对other/mysql/CMakeLists.txt的修改,直接在项目自身的CMakeLists.txt中管控子模块配置,避免后续升级子模块时配置丢失。在add_subdirectory(other/mysql)语句之前添加如下配置:
# 开启legacy JDBC编译
set(WITH_JDBC ON CACHE BOOL "Build legacy JDBC API" FORCE)
# 显式指定libmysqlclient路径,跳过自动探测逻辑
set(WITH_MYSQL "/usr" CACHE PATH "MySQL client install prefix" FORCE)
set(MYSQL_INCLUDE_DIR "/usr/include/mysql" CACHE PATH "MySQL client headers path" FORCE)
set(MYSQL_LIB_DIR "/usr/lib/x86_64-linux-gnu" CACHE PATH "MySQL client library path" FORCE)
  1. 清理历史CMake缓存后重新配置:直接删除项目的build目录,重新执行CMake配置流程即可,原有报错会消失。
编译校验

配置完成后可确认编译目标:legacy JDBC对应的动态库目标为mysqlcppconn,新版X DevAPI对应的动态库目标为mysqlcppconn8,两个目标均正常生成即代表配置正确。

内容的提问来源于stack exchange,提问作者Anime.pdf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:33:25