IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Ubuntu下QT Mysql 库编译过程 -> 正文阅读

[系统运维]Ubuntu下QT Mysql 库编译过程

Ubuntu下Mysql 库编译过程

ganggegel -220314

说明:Ubuntu上使用的QT版本是5.7.1 版本上的mysql驱动是不可用的,需要自己编译,网上关于编译的教程基本不可用,关于如何编译,遇到一些问题,记录下来以免以后再次遇到有个参考,节省时间。

  1. 不使用qteverywhere中源码,这个源码主要是为了arm平台编译驱动使用,同x86平台有些许差异,尝试过用此源码编译,报错版本不一致。
  2. 使用qt安装包(路径:/opt/Qt5.7.1/5.7/Src)下src路径下源码,如果安装时没有勾选,则卸载,重装(实际上当前环境没有)

卸载方式:执行路径:/opt/Qt5.7.1下的MaintenanceTool程序。如下图:

  1. 安装mysql客户端:

sudo apt-get install libmysqlclient-dev?;

  1. 进入qt源码下mysql路径

??/opt/Qt5.7.1/5.7/Src/qtbase/src/plugins/sqldrivers/mysql;

在此打开命令终端。

执行如下命令:

/opt/Qt5.7.1/5.7/gcc_64/bin/qmake

"INCLUDEPATH+=/usr/include/mysql"

"LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient"

?mysql.pro

(注意上述命令无换行符)

其中,"INCLUDEPATH+=/usr/include/mysql" 是mysql客户端包含头文件,也可能不是在此路径中,可以使用whereis mysql 查看。

"LIBS+=-L/usr/lib/x86_64-linux-gnu/ -lmysqlclient"是mysql库位置,一般都是在此位置。

  1. 关键点

上一步中命令执行完一般不会报错,但是紧接着执行 make 命令时,

会报如下错误:

/usr/bin/ld: cannot find -lmysqlclient_r

使用find / -name “*mysqlclient_r*”?全局搜索并没有发现任何mysqlclient_r的库文件,仅搜索到libmysqlclient相关库链接,最终指向libmysqlclient.so.20.3.20这个库文件,如下图:

此时尝试建立链接,执行如下命令:

ln -s libmysqlclient.so.20.3.20 ?libmysqlclient_r.so

然后再次输入命令:

?make;

不再报错,输入:

make install;

库编译成功了。在路径:/opt/Qt5.7.1/5.7/Src/qtbase/plugins/sqldrivers下,如图

将此文件拷贝到如下路径中:

/opt/Qt5.7.1/5.7/gcc_64/plugins/sqldrivers

/opt/Qt5.7.1/Tools/QtCreator/lib/Qt/plugins/sqldrivers

/usr/lib/x86_64-linux-gnu

  1. 使用方法:

示例(链接公司内智利mysql库):

包含头文件:

#include <QSqlDatabase>

#include <QSqlQuery>

#include <QSqlError>

QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");

???????db.setHostName("192.168.0.50");

???????db.setPort(3306);

???????db.setDatabaseName("zzkj_zl_220308");

???????db.setUserName("root");

???????db.setPassword("Zzkj123456");

???????if(!db.open()){

???????????qDebug()<<"Unable to open database";

???????}else{

???????????qDebug()<<"Database connection established";

???????}

如下图,可以成功连上测试库。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-15 23:07:58  更:2022-03-15 23:09:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:49:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码