参考自
Ubuntu20.04.3 QT5.15.2 MySQL驱动编译
Ubuntu 18.04 编译安装 Qt mysql驱动
下边这篇博客不是主要参考的, 但是似乎解决了我的难题(找不到 libmysqlclient.so
)
ubuntu18.04.2 LTS 系统关于Qt5.12.3 无法加载mysql驱动,需要重新编译MYSQL数据库驱动的问题以及解决方案
系统版本
cpp
rain@rain-virtual-machine:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
MySQL 肯定要先安装上, 我安装的是
cpp
mysql Ver 8.0.35-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))
然后安装依赖库
cpp
sudo apt install libmysqlclient-dev
// 不然找不到 usr/include/mysql 文件
// 或者
sudo apt-get install mysql-client libmysqlclient-dev
// mysql-client是否需要安装我也不是很清楚,后续如果无法进行, 可以安装试试
可通过以下命令定位 libmysqlclient.so
的位置:
cpp
sudo updatedb // 更新ubuntu的文件数据库,it may take a long time
sudo locate libmysqlclient.so
执行完后一定要能查到 libmysqlclient.so
, 否则没必要继续进行操作
cpp
rain@rain-virtual-machine:/usr/lib/x86_64-linux-gnu$ locate libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.2.35
为了查找到
libmysqlclient.so
我中间试了很多方法, 后来误打误撞执行成功了, 可能是因为执行了sudo updatedb
或者安装了mysql-client
下面进行正式的编译
1.首先找到QT的源码目录 , 例如 /home/rain/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql
rain是你当前的用户名, 路径也是根据你自己安装的Qt路径来
版本号(我的是5.15.2)下如果没有 Src
目录, 可以考虑重装 Qt 或者更新下载 Src
2.修改 mysql.pro 文件
第 6 行的代码直接注释掉
然后添加两行代码, 这两行代码根据你安装的目录确定
cpp
INCLUDEPATH += /usr/include/mysql
LIBS += -L/usr/lib/x86_64-linux-gnu -lmysqlclient
例如我的
(1) 执行命令 whereis mysql
cpp
rain@rain-virtual-machine:/usr/lib/x86_64-linux-gnu$ whereis mysql
mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz
可以看到 /usr/include/mysql
路径
(2) 执行命令 locate libmysqlclient.so
cpp
rain@rain-virtual-machine:/usr/lib/x86_64-linux-gnu$ locate libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.2.35
3.点开 pri 文件, 然后注释掉第 4 行代码即可
- 在
/home/rain/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql
目录下, 打开终端, 执行如下代码
cpp
/home/rain/Qt/5.15.2/gcc_64/bin/qmake mysql.pro
// 注意 rain是当前的用户名, 路径也是根据你自己安装的Qt路径来
5.然后mysql源码文件夹里多了个 MakeFile
然后 make
和 make install
cpp
rain@rain-virtual-machine:~/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql$ make Makefile
make: "Makefile"已是最新。
rain@rain-virtual-machine:~/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql$ make install Makefile
输出省略
6.然后就可以在mysql
前一个目录(sqldrivers
)得到一个 plugins
,打开里面的 sqldrivers
有两个文件, 就标志着编译成功了
7.然后将两个文件放入编译器的 /home/rain/Qt/5.15.2/gcc_64/plugins/sqldrivers
中, 大功告成~~
测试程序
pro 里加个 sql 模块
cpp
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
qDebug() << QSqlDatabase::drivers();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("1234");
db.setPort(3306);
db.setDatabaseName("mysql");
qDebug() << (db.open() ? "open db success." : "open db failed.");
QSqlQuery cursor;
QString query = " SELECT user, host FROM user; ";
if (cursor.exec(query)) {
while (cursor.next()) {
qDebug() << "user: " << cursor.value("user").toString()
<< "host: " << cursor.value("host").toString();
}
}