Drogon无法在Fedora上检测到MySQL(未找到)

后端开发 2026-07-09

我正在尝试使用Drogon构建一个带MySQL支持的C++后端,但Drogon在 CMake配置阶段无法检测到MySQL。


环境

  • Fedora(最新版本)
  • GCC 15.2.1
  • CMake(近期版本)
  • Drogon 1.9.12

问题

在为Drogon运行CMake时:

cmake ..

我得到:

-- MySql was not found.

MySQL安装

我使用以下方式安装了MySQL:

sudo dnf install mysql-community-devel

客户端库存在:

ls /usr/lib64/mysql/libmysqlclient.so

输出:

/usr/lib64/mysql/libmysqlclient.so

pkg-config

可以通过pkg-config看到MySQL:

pkg-config --libs mysqlclient

输出:

-L/usr/lib64/mysql -lmysqlclient

头文件

头文件位于:

/usr/include/mysql

然而,我怀疑这可能不是正确的MySQL头文件。

例如:

grep -R "mysql_real_query_start" /usr/include/mysql

返回的是空的。


我尝试了什么

我尝试了几种做法:

  1. 重新安装MySQL开发包
  2. 移除与MariaDB相关的包
  3. 在CMake中强制指定MySQL路径
cmake .. \
  -DMYSQL_INCLUDE_DIR=/usr/include/mysql \
  -DMYSQL_LIBRARIES=/usr/lib64/mysql/libmysqlclient.so

结果:

MySql was not found.

使用MySQL tarball(自定义头文件/库)

cmake .. \
  -DCMAKE_INCLUDE_PATH=~/Downloads/mysql/include \
  -DCMAKE_LIBRARY_PATH=~/Downloads/mysql/lib

仍然:

MySql was not found.

尝试禁用MariaDB检测

cmake .. -DUSE_MYSQL=ON -DUSE_MARIADB=OFF

结果:

USE_MARIADB not used
MySql was not found.

额外观察

有一段时间Drogon检测到的是MariaDB:

-- Ok! We find mariadb!

但编译时出现了类似的错误:

mysql_real_query_start not declared
MYSQL_WAIT_READ not declared

提问

在Fedora上让Drogon正确检测到MySQL的正确方法是什么?

  • MariaDB会不会干扰MySQL的检测?
  • Fedora的 MySQL头文件与Drogon不兼容吗?
  • Drogon的 MySQL检测是否存在已知问题?

预期结果

CMake应该检测到MySQL,并在Drogon中启用MySQL支持。

解决方案

我设法解决了:

sudo systemctl stop mariadb

sudo dnf remove mariadb-server mariadb-client mariadb-common

sudo dnf autoremove

sudo dnf update

sudo dnf install mysql-server

sudo dnf install mariadb-devel

之后,重新编译并安装Drogon。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章