ubuntu+arrch64+qt+libqsqlmysql.so编译生成

本人环境如下

ubuntu20.04

qt5.12.8

本人在最初安装qtcreator的时候没有选择安装资源,所以需要单独去下载资源
如果有资源的话就不用再去下载了

如果在最初安装qtcreator的时候,勾选了如下图红色圈圈,就可以找到Qt源码MySQL的项目位置,使用Qt Creator 打开mysql.pro ,路径为下面代码区的。

要是没有的话就按着我下面的下载步骤开始

要是有的话就直接跳到修改mysql.pro文件那里开始看

/usr/lib/aarch64-linux-gnu/qt5/plugins/sqldrivers/mysql/mysql.pro

首先进入下面的连接,选择你自己的qt版本

https://download.qt.io/archive/qt/

然后进入下面的页面

选择第一个submoules,点击进入

然后选择qtbase,点击后自动下载

下载后,把压缩包从下载移动到主目录即可

然后解压

然后打开/home/tech/qtbase-everywhere-src-5.12.8/src/plugins/sqldrivers/mysql中的mysql.pro文件,然后做如下修改

1.在mysql.pro中注释掉这句话

#QMAKE_USE += mysql

2.在mysql.pro文件中添加如下配置:

DESTDIR = ../mysql/target        (指定最后生成的动态库存放位置)
INCLUDEPATH += /usr/include/mysql        (引入MySQL头文件)
LIBS += -L/usr/lib/aarch64-linux-gnu/ -lmysqlclient (引入动态库)

3.修改后的mysql.pro配置文件如下图:

4.在qsqldriverbase.pri配置文件中做如下修改:

#include($$shadowed($$PWD)/qtsqldrivers-config.pri)      (将原来的这一句注释)
include($$shadowed($$PWD)/configure.pri)        (添加这样一句话)

修改后的qsqldriverbase.pri配置文件如下图:

5.使用qmake编译(可以直接点击构建)

如果点击构建是报Cannot write file /mkspecs/modules-inst/qt_plugin_qsqlmysql.pri:Cannot create parent qt_plugin.prf错误,不用慌,这是安装qt时权限没给够导致的;报错图片如下

关闭Qt,使用which qtcreator命令查询qtcreator的位置

然后使用sudo /opt/Qt5.14.2/Tools/QtCreator/bin/qtcreator mysql.pro(使用绝对路径)命令打开mysql工程,再点击窗口左下角的构建就不会报错了;

注意终端要在mysql.pro所在文件夹右键选择终端打开

然后构建就好了

构建完成后就会生成libqsqlmysql.so(由于Qt版本不同,生成的库文件也有所不同,有的不止一个文件),但生成的库文件不在build-mysql-Desktop_Qt_5_12_12_MinGW_64_bit-Release文件夹中,可以使用sudo find / -name 'libqsqlmysql*’命令搜索文件在哪;

找到libqsqlmysql.so文件路径后将libqsqlmysql.so文件复制到qt安装路径下的/usr/lib/aarch64-linux-gnu/qt5/plugins/sqldrivers文件夹中;命令如下(注意修改为你自己的路径),

sudo cp libqsqlmysql.so /usr/lib/aarch64-linux-gnu/qt5/plugins/sqldrivers/

但注意是在libqsqlmysql.so所在文件夹路径内右键打开终端

到这一步就配置完成了;

如下图,就完成了

测试MySql驱动配置结果

1.新创建一个工程,在pro文件中加上Qt += sql;
2.在main.cpp中使用QSqlDatabase::drivers()打印所有可用数据库驱动程序的列表;
    注意这里编译也是使用相同的编译器,其它编译器还没有配置;

代码如下

#include <QSqlDatabase>
#include <QDebug>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    qDebug()<<QSqlDatabase::drivers();
    return a.exec();
}

没有配置的结果如下:

("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7")

配置了MySql驱动后打印结果如下:

("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")

 

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值