交叉编译Qt5(MinGW)时MySQL驱动编译失败问题求助
解决Linux下i686-w64-mingw32交叉编译Qt5.9.4 32位Windows版MySQL驱动问题
我之前也踩过交叉编译Qt SQL驱动的类似坑,结合你的情况,给你梳理一套可行的实操步骤:
一、先确认前置条件
- 你已经成功编译安装了
qtbase-opensource-src-5.9.4(针对32位Windows的交叉编译版本) - 系统已安装
i686-w64-mingw32交叉编译工具链 - 准备好32位MinGW编译的MySQL库文件(划重点:绝对不能用MSVC版本的MySQL库,必须是适配MinGW的32位版本)
如果没有现成的MinGW版MySQL库,你可以自己交叉编译MySQL源码:
- 下载MySQL 5.x系列源码(Qt5.9.4对MySQL 8.x兼容性可能有问题,建议选5.7或5.6版本)
- 用
i686-w64-mingw32工具链配置编译:
编译完成后会得到mkdir mysql-build && cd mysql-build cmake ../mysql-source -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ -DCMAKE_SYSTEM_NAME=Windows -DBUILD_SHARED_LIBS=ON -DWITH_SSL=OFF make && make installinclude头文件目录和lib下的libmysql.dll、libmysql.dll.a等核心文件。
二、编译Qt MySQL驱动
- 进入Qt源码中MySQL驱动的专属目录:
cd qtbase-opensource-src-5.9.4/src/plugins/sqldrivers/mysql - 设置交叉编译环境变量,确保工具链指向MinGW:
export CC=i686-w64-mingw32-gcc export CXX=i686-w64-mingw32-g++ export LD=i686-w64-mingw32-ld - 用你交叉编译好的Qt的
qmake生成Makefile,指定MySQL的头文件和库路径:
记得替换/path/to/your/compiled-qt5.9.4/bin/qmake "INCLUDEPATH+=/path/to/mingw-mysql/include" "LIBS+=-L/path/to/mingw-mysql/lib -lmysql" mysql.pro/path/to/your/compiled-qt5.9.4为你实际的Qt安装目录,/path/to/mingw-mysql为你交叉编译得到的MySQL库目录。 - 编译并安装驱动:
执行完成后,驱动文件make make installqsqlmysql.dll(发布版)和qsqlmysqld.dll(调试版)会被自动安装到你的Qt安装目录下的plugins/sqldrivers文件夹中。
三、验证与收尾
- 把MySQL库中的
libmysql.dll复制到Windows程序的运行目录,或者交叉编译的Qt的bin目录下(Windows运行时必须依赖这个动态库) - 编写简单的Qt测试代码验证驱动加载:
交叉编译这个程序后放到Windows上运行,输出中应该能看到#include <QCoreApplication> #include <QSqlDatabase> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); qDebug() << "Available drivers:" << QSqlDatabase::drivers(); return a.exec(); }QMYSQL和QMYSQL3,说明驱动加载成功。
常见问题排查
- 链接错误/找不到库:确认MySQL库是32位MinGW版本,LIBS路径正确,链接参数
-lmysql对应MinGW的库命名规则(MinGW库文件名为libmysql.dll.a,所以用-lmysql即可) - qmake使用错误:必须用你交叉编译的Qt的qmake,不能用系统默认的Qt qmake,否则会生成针对Linux的Makefile
- 头文件找不到:检查INCLUDEPATH是否指向MySQL的include目录,路径不要包含空格或特殊字符
- Qt SQL模块未开启:编译qtbase时默认开启SQL模块,若你手动关闭了,需要重新编译qtbase并加上
-sql-sqlite -sql-mysql等参数
内容的提问来源于stack exchange,提问作者N0un
相关产品推荐
相关产品推荐

