QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

这篇具有很好参考价值的文章主要介绍了QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、背景

如果需要在QT程序中实现与MySQL数据库的交互,那么必不可少的一环就是对Qt MySql数据库驱动的编译。

1、基本环境

操作系统:Windows10 专业版 64位
Qt版本:Qt 5.15.2
开发环境Qt安装路径:D:\Qt
交叉编译服务器:Ubuntu 18.4
交叉编译服务器Qt安装路径:/opt/Qt
目标芯片:rk3568
目标平台:arm64

Qt安装时需要勾选安装源码,否则是无法找到Qt的数据库驱动源码的。

2、开发环境编译Qt MySql数据库驱动

2.1 依赖说明

  • mysql.h及相关头文件
  • libmysql.lib

因为在编译Qt MySql驱动源码是需要依赖libmysql.lib和mysql.h头文件,在开发环境中(Windows)我们可以通过安装MySql服务
开发环境中MySQL的安装说明:
版本:5.7
安装目录:C:\Program Files\MySQL\MySQL Server 5.7
libmysql.lib所在目录:C:\Program Files\MySQL\MySQL Server 5.7\lib
mysql.h及相关头文件所在目录:C:\Program Files\MySQL\MySQL Server 5.7\include

2.2 MySQL驱动编译过程

1、驱动源码目录:D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql
2、在Windows的开始菜单中找到Qt5.15.2(MinGW 8.1.0 64-bit)命令行工具
3、切换到mysql驱动源码目录下:D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql,然后分别执行以下命令
qmake “INCLUDEPATH+=‘C:\Program Files\MySQL\MySQL Server 5.7\include’” “LIBS+=‘C:\Program Files\MySQL\MySQL Server 5.7\lib\libmysql.lib’” -o Makefile mysql.pro
mingw32-make

qmake "INCLUDEPATH+='C:\Program Files\MySQL\MySQL Server 5.7\include'" "LIBS+='C:\Program Files\MySQL\MySQL Server 5.7\lib\libmysql.lib'" -o Makefile mysql.pro
mingw32-make

4、编译后的输出目录:D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\plugins\sqldrivers
5、把编译后的输出文件libqsqlmysql.a、qsqlmysql.dll、qsqlmysql.dll.debug复制到D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers目录下
6、编译项目需默认引用的目录:D:\Qt\5.15.2\mingw81_64\plugins\sqldrivers
7、要把对应的dll复制到C:\Windows目录下:libmysql.dll

3、交叉编译Qt MySql数据库驱动

3.1 依赖说明

  • mysql.h及相关头文件
  • libmysqlclient.so(注意是目标系统的库-arm版本的库)

3.3.1 如何在交叉编译服务器上找到mysql.h及相关头文件

1、我的交叉编译服务器用的就是构建目标linux操作系统的编译服务器(ubuntu18.4),可以通过安装libmysqlclient-dev软件包获取mysql.h及相关头文件。
2、首先切换到root用户

sudo -i

输入root用户的密码后就切换到root用户了
3、然后执行以下命令(如果未切换到root用户,则前面加上sudo)

apt-get upgrade
apt-get install -y libmysqlclient-dev

如下图:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习
4、安装完毕后就可以在/usr/include/mysql目录下找到mysql.h及相关头文件了,如下图:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习

3.3.2 如果在交叉编译服务器上获得目标系统(ARM版本)的libmysqlclient.so库

1、在3.3.1中安装libmysqlclient-dev后,也会在/usr/lib/x86_64-linux-gnu目录下部署libmysqlclient.so,但是这个文件不是arm版本的,因此在交叉编译qt mysql驱动时,是不能引用这个库的。如下图:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习
2、因为我的交叉编译服务器就是用的构建linux操作系统的编译服务器,因此在构建目标操作系统时,可以通过buildroot的menuconfig勾选mysql的支持以生成arm版本的libmysqlclient.so,如下图:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习
3、勾选mysql support后重新构建目标操作系统后,在buildroot的输出目录下的target/usr/lib目录下就包含arm版本的libmysqlclient.so了,如下图:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习

3.2 MySQL驱动交叉编译过程

1、我们知道Qt开发的源码,要生成可执行程序一般要通过2个步骤:

  1. 通过qmake生成Makefile
  2. 通过make对源码进行编译生成动态库和可执行程序

交叉编译的思路:首先我们要明白在开发环境中安装qt时自带的qmake是不能作为交叉编译用的,因为他生成的Makefile中所采用的gcc和g++编译器都是对应x86和windows的。再就是我们如果再交叉编译服务器(X86/Linux)上直接安装Linux版本的qt的话,这个qt自带的qmake也不能作为交叉编译用,因为他生成的Makefile中所采用的gcc和g++编译器都是对应x86和Linux的。因此我们首先要找到对应目标系统(Arm/Linux)的qmake才行。

2、我是通过buildroot构建目标操作系统的,因为要在目标系统中运行qt的程序,因此在构建过程中要把qt的环境编译到目标系统中,构建完毕后会在buildroot目录下生成output目标,我们可以采用这下面的qmake生成采用交叉编译器的Makefile,如下:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习

qmake的目录为:SDK/buildroot/output/rockchip_rk3568/host/bin/qmake
其中SDK表示编译目标Linux系统的源码目录
rockchip_rk3568对应的是芯片型号

3、我们先把qt源码部署到交叉编译环境中,如下:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习
4、通过vim修改mysql.pro工程文件内容,注释掉QMAKE_USE += mysql,如下:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习
然后按ESC,输入wq保存退出。
5、然后我们使用SDK/buildroot/output/rockchip_rk3568/host/bin/qmake生成Makefile,同时要执行包含mysql.h及相关头文件所在的目录且依赖的libmysqlclient.so库的路径,如下:

SDK/buildroot/output/rockchip_rk3568/host/bin/qmake “INCLUDEPATH+=/usr/include/mysql” “LIBS+=SDK/buildroot/output/rockchip_rk3568/target/usr/lib/libmysqlclient.so” -o Makefile mysql.pro
其中SDK表示编译目标Linux系统的源码目录
rockchip_rk3568对应的是芯片型号
SDK/buildroot/output/rockchip_rk3568/target/usr/lib/libmyqlclient.so文件是通过交叉编译工具对libmysqlclient-dev源码编译生成的针对目标系统(Arm/Linux)的库文件。

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习
6、看一下Makfile的内容:

可以看到,这里的Makefile中指定的gcc/g++编译工具就是交叉编译工具,就是能生成Arm/Linux能运行的。
具体目录为:
SDK/buildroot/output/rockchip_rk3568/host/bin/aarch64-buildroot-linux-gnu-gcc
SDK/buildroot/output/rockchip_rk3568/host/bin/aarch64-buildroot-linux-gnu-g++
其中SDK表示编译目标Linux系统的源码目录
rockchip_rk3568对应的是芯片型号。

QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习
7、这时,再执行make就会采用交叉编译工具aarch64-buildroot-linux-gnu-gcc和aarch64-buildroot-linux-gnu-g++进行编译了,
编译完毕后,会生成libqsqlmysql.so,如下图:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习

目录:QtSrc/qtbase/src/plugins/sqldrivers/plugins/sqldrivers
其中QtSrc表示Qt的源码目录。

至此终于生成了支持目标系统(Arm/Linux)能够识别的数据库驱动库libqsqlmysql.so。

4、把数据库驱动部署到目标系统中

1、首先通过MobaXterm以SSH方式连接到目标系统(开发板系统)。
2、在/usr/lib/qt/plugins目录下创建目录sqldrivers。
3、把在交叉编译服务器中生成的QtSrc/qtbase/src/plugins/sqldrivers/plugins/sqldrivers/libqsqlmysql.so文件传到目标系统的/usr/lib/qt/plugins/sqldrivers目录下,如下:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习

至此,目标系统就支持Qt程序对postgresql数据库的访问了。

5、QT测试程序访问MySQL数据库

5.1 关键代码

void Widget::on_btnDbTest_clicked()
{
    //以下代码测试访问MySQL数据
    QSqlDatabase  db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("xxx.xxx.xxx.xxx");		//数据库服务器的ip
    db.setPort(3306);						//数据库服务器的端口号
    db.setDatabaseName("mydbname");    //此处写你数据库的名称
    db.setUserName("root");			//写mysql数据库的用户名
    db.setPassword("root@123");			//写mysql数据库的密码

    if (!db.open())
    {
        qDebug() << "数据库连接失败!";
        QSqlError lastError = db.lastError();
        qCritical() << lastError.nativeErrorCode() << ", " << lastError.text();
    }
    else
    {
        qDebug() << "数据库连接成功!";
        QSqlQuery query(db);
        if (query.exec("select * from sys_user"))
        {
            qDebug() << "查询表格UserInfo成功!";
            while(query.next())
            {
                qDebug() << query.value(0).toInt() << ", " << query.value(1).toString() << ", " << query.value(2).toString() << "," << query.value(3).toString();
            }
        }
    }
}

5.2 执行结果

把上面的qt程序交叉编译后放入目标系统(arm),执行效果如下:
QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动,qt,数据库,qt,学习文章来源地址https://www.toymoban.com/news/detail-668532.html

到了这里,关于QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt+GDAL开发笔记(一):在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/131931309 上一篇:没有了 下一篇:敬请期待…   麒麟系统上做全球北斗定位终端开发,调试工具要做一个windows版本方便校对,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标

    2024年02月15日
    浏览(73)
  • RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/132733901 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《RK3568开发笔记(六):

    2024年02月07日
    浏览(63)
  • RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/132826197 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中… 上一篇:《RK3568开发笔记(七):

    2024年02月07日
    浏览(132)
  • Qt6.5.1+WebRTC学习笔记(十一)开发环境搭建(ubuntu22.04)

    win10开发测试已经一段时间了,最近将程序移植到ubuntu测试了下,改动不是很大,本教程记录下环境搭建过程 1.操作系统ubuntu22.04 64位 x86架构(建议更新到最新) 2.合理的上网方式,需要正常访问google,最好有40G以上流量 3.安装git,并设置代理 4.安装depot_tools depot_tools是包含下载

    2024年02月09日
    浏览(60)
  • Qt6.5.1+WebRTC学习笔记(十)开发环境搭建(win10+vs2022)

    1.操作系统win10 64位 2.合理的上网方式,需要正常访问google,最好有40G以上流量 3.安装VS2022,笔者使用的是社区版,并选中C++相关,笔者设置如下        注意,win10的sdk需要是10.0.22621.0,其他版本可能导致编译不通过,而且这个版本会根据webrtc源码的更新而发生变化  4.安装

    2024年02月08日
    浏览(55)
  • QT连接MySql数据库失败,编译驱动问题,最详细解决办法

    各位读者你们好🔥 此篇是本专栏的第一篇,本专栏专门收录在学习过程中遇到的环境配置、软件问题等开发环境方面的问题。🚀🚀🚀 刚刚转阴就迫不及待的赶紧写一篇博客来解决一直落下的一个问题: 关于QT和MySql数据库的连接问题😷(在本人经过整整三天的无限踩坑之

    2024年02月05日
    浏览(55)
  • 统信UOS系统开发笔记(三):从Qt源码编译安装之编译安装Qt5.12.8

      上一篇,是使用Qt提供的安装包安装的,有些场景需要使用到自己编译的Qt,所以本篇如何在统信UOS系统上编译Qt5.12.8源码。     系统版本:      参考博文《获取下载Qt安装包,Qt源码全国网址备忘录(不用注册Qt账户,即可下载各版本Qt安装包和Qt源码包)》   

    2024年02月08日
    浏览(55)
  • QT学习笔记-QT5.15 + MSVC编译套件时编译日志及运行日志日志乱码解决

    操作系统:Windows10专业版 QT版本:QT5.15.2 QtCreator版本:9.0.2 MSVC版本:MSVC 2019 64bit C/C++编译器:Microsoft Visual C++ Compiler 17.1.32328.378(amd64) 调试器:Auto-detected CDB at C:Program FilesWindows Kits10Debuggersx64cdb.exe 文件编码的设置都是采用的默认值UTF-8,如下图: 当qt的项目采用MSVC构建套

    2024年02月14日
    浏览(53)
  • 软件设计开发笔记4:QT操作SQLite数据库

      有时候我们需要在软件中记录一些历史数据以便于对数据的查询。而我们希望软件不能太复杂,体量也不要太大,这个时候就需要如SQLite这样轻量级的数据库。这篇中我们就来讨论如何在使用QT开发应用是操作SQLite数据库。   SQLite是一款开源、轻量级、跨平台的数据库

    2024年02月09日
    浏览(65)
  • Qt开发笔记(Qt5.9.9下载安装环境搭建win10)

    #1 Qt下载网站(国内、国外镜像) #2 Qt5.9.9安装选项 #3 配置系统环境变量 #4 创建测试项目 #1 Qt下载网站(国内、国外镜像) 官方下载地址(慢):http://download.qt.io/ 国内镜像网站 这里给大家推荐几个国内著名的 Qt 镜像网站,主要是各个高校的: 中国科学技术大学:http://mi

    2024年02月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包