欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > Ubuntu22.04 上安装Qt5以及编译MySQL驱动

Ubuntu22.04 上安装Qt5以及编译MySQL驱动

2025/4/2 3:18:59 来源:https://blog.csdn.net/yuyuyuliang00/article/details/146471467  浏览:    关键词:Ubuntu22.04 上安装Qt5以及编译MySQL驱动

本篇记录在线安装Qt5,和编译其使用的MySQL驱动层的过程,并且进行了测试。

1、在线安装Qt5

软件包升级:

root@blctrl-s2:/home/blctrl# apt update
Hit:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease
...
Building dependency tree... Done
Reading state information... Done
163 packages can be upgraded. Run 'apt list --upgradable' to see them.

安装Qt5:

 apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools qtcreator qtbase5-private-dev dpkg-dev

安装mysql客户端访问库:

root@blctrl-s2:/home/blctrl# apt install libmysqlclient-dev mysql-client

编辑/etc/apt/sources.list文件,取消对源码安装的注释:

...
deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy main restricted
...
deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates main restricted
...
deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy universe
...
deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates universe
...
deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy multiverse
...
deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-updates multiverse
...
deb-src http://cn.archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
...
deb-src http://security.ubuntu.com/ubuntu jammy-security main restricted
...
deb-src http://security.ubuntu.com/ubuntu jammy-security universe
...
deb-src http://security.ubuntu.com/ubuntu jammy-security multiverse

保存修改,执行:

root@blctrl-s2:/home/blctrl# apt-get update

  安装源代码:

apt source qtbase5-dev

2、编译MySQL的驱动

查找mysql驱动的源代码放置路径:

root@blctrl-s2:/home/blctrl# find / -name "sqldrivers"
/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers
/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/.pc/mysql_remove_version_checks.diff/src/plugins/sqldrivers
/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/.pc/link_fbclient.diff/src/plugins/sqldrivers
/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/.pc/cross_build_mysql.diff/src/plugins/sqldrivers
/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/.pc/mysql_field_readonly.diff/src/plugins/sqldrivers

进入MySQL驱动的源代码路径:

root@blctrl-s2:/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers# ls
configure.json  configure.pri  db2  ibase  mysql  oci  odbc  psql  qsqldriverbase.pri  README  sqldrivers.pro  sqlite  sqlite2  tds
root@blctrl-s2:/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers# cd mysql/
root@blctrl-s2:/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/mysql# ls
main.cpp  mysql.json  mysql.pro  qsql_mysql.cpp  qsql_mysql_p.h  README

编辑mysql.pro文件:

TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp# 注释掉这一行
#QMAKE_USE += mysqlOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
#添加以下两行
INCLUDEPATH += /usr/include/mysql
LIBS += -L /usr/lib/x86_64-linux-gnu/ -lmysqlclient

执行以下命令,进行编译:

root@blctrl-s2:/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/mysql  qmake mysql.pro
root@blctrl-s2:/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/mysql  make
root@blctrl-s2:/home/blctrl/qtbase-opensource-src-5.15.3+dfsg/src/plugins/sqldrivers/mysql  make install

进入usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers目录,确认安装列libqsqlmysql.so的库文件:

root@blctrl-s2:/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers# cd /usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers
root@blctrl-s2:/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers# ls
libqsqlite.so  libqsqlmysql.so

到此,mysql驱动编译完成。

使用以下代码进行数据库连接测试:

dbTest.pro文件如下:

QT -= gui
QT += sqlCONFIG += c++11 console
CONFIG -= app_bundle# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \main.cpp# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

main.cpp如下: 

#include <QCoreApplication>
#include <QtSql>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug() << "-------------------------";QSqlDatabase db;db = QSqlDatabase::addDatabase("QMYSQL");db.setHostName("192.168.50.245");db.setPort(3306);db.setDatabaseName("mytestDB");db.setUserName("test");db.setPassword("@TESTtest");if (!db.open()){qDebug() << "Failed to connect to database";qDebug() << db.lastError().text();return -1;}else{qDebug() << "database opened:";qDebug() << "Connect to database:" << db.connectionName();qDebug() << "Tables:" << db.tables();db.close();}return a.exec();
}

编译以上代码,进行测试,Qt5中MySQL数据库连接测试成功:

blctrl@blctrl-s2:~/qt5/dbTest$ qmake dbTest.pro
blctrl@blctrl-s2:~/qt5/dbTest$ make
...
blctrl@blctrl-s2:~/qt5/dbTest$ ./dbTest
-------------------------
database opened:
Connect to database: "qt_sql_default_connection"
Tables: ("books", "orders", "users")
^C

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词