当前位置: 首页 > news >正文

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 = qsqlmysql

HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp

# 注释掉这一行
#QMAKE_USE += mysql

OTHER_FILES += mysql.json

PLUGIN_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 += sql

CONFIG += 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.0

SOURCES += \
        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

相关文章:

  • 从 @SpringBootApplication 出发,深度剖析 Spring Boot 自动装配原理
  • centos 9 编译安装 rtpengine (快方式)-使用 debian12 系统自带
  • SQL 基础 BETWEEN 的常见用法
  • leetcode hot100 柱状图中的最大矩形
  • Linux下S3cmd使用方式详解:从入门到高级的对象存储管理
  • RISC-V AIA学习2---IMSIC
  • macOS 安装 Miniconda
  • C++ Json-Rpc框架-3项目实现(1)(1.其它函数实现2.消息类型字段定义3.消息Message/通信Muduo抽象具象实现)
  • 深入解析 Vue3 响应式系统:原理、性能优化与应用场景
  • leetcode 2116. 判断一个括号字符串是否有效 中等
  • 如何扩展 Linux 中 ext4 文件系统的大小
  • 【PostgreSQL】pg各版本选用取舍逻辑与docker安装postgres:15
  • Day110 若依-基础
  • 微信小程序中使用WebSocket通信
  • 【2025】基于springboot+vue的高考志愿填报系统设计与实现(源码、万字文档、图文修改、调试答疑)
  • Chrome 134 版本开发者工具(DevTools)更新内容
  • WordPress分类目录绑定二级域名插件
  • WordPress上传图片时显示“未提供数据”错误
  • 常⻅框架漏洞--ThinkPHP
  • Python虚拟环境:从入门到实战指南
  • 福建福州马尾区区长王刚跨省份调任新疆生产建设兵团国资委主任
  • 阳朔兴坪镇:在建乾元桥“垮塌”是谣言,系降雨导致工程挡土墙倾斜
  • 俄乌直接谈判勉强收场,特朗普再次“电话外交”能否有用?|907编辑部
  • 国家统计局:下阶段要继续发挥宏观政策作用,促进价格合理回升
  • 调查:“网约摩的”上线起步价五六元,合规性及安全性引质疑
  • “80后”北大硕士罗婕履新甘肃宁县县委常委、组织部部长