Ubuntu 22.04 编译安装 Qt mysql驱动

参考自
Ubuntu20.04.3 QT5.15.2 MySQL驱动编译
Ubuntu 18.04 编译安装 Qt mysql驱动
下边这篇博客不是主要参考的, 但是似乎解决了我的难题(找不到 libmysqlclient.so)
ubuntu18.04.2 LTS 系统关于Qt5.12.3 无法加载mysql驱动,需要重新编译MYSQL数据库驱动的问题以及解决方案

系统版本

rain@rain-virtual-machine:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 22.04.3 LTS
Release:	22.04
Codename:	jammy

MySQL 肯定要先安装上, 我安装的是

mysql  Ver 8.0.35-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

然后安装依赖库

sudo apt install libmysqlclient-dev
// 不然找不到 usr/include/mysql 文件

// 或者
sudo apt-get install mysql-client libmysqlclient-dev
// mysql-client是否需要安装我也不是很清楚,后续如果无法进行, 可以安装试试

可通过以下命令定位 libmysqlclient.so 的位置:

 sudo updatedb // 更新ubuntu的文件数据库,it may take a long time
 sudo locate libmysqlclient.so

执行完后一定要能查到 libmysqlclient.so , 否则没必要继续进行操作

rain@rain-virtual-machine:/usr/lib/x86_64-linux-gnu$ locate libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.2.35

为了查找到 libmysqlclient.so 我中间试了很多方法, 后来误打误撞执行成功了, 可能是因为执行了 sudo updatedb 或者安装了 mysql-client

下面进行正式的编译

1.首先找到QT的源码目录 , 例如 /home/rain/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql
rain是你当前的用户名, 路径也是根据你自己安装的Qt路径来
版本号(我的是5.15.2)下如果没有 Src 目录, 可以考虑重装 Qt 或者更新下载 Src

2.修改 mysql.pro 文件
在这里插入图片描述第 6 行的代码直接注释掉
然后添加两行代码, 这两行代码根据你安装的目录确定

INCLUDEPATH += /usr/include/mysql
LIBS += -L/usr/lib/x86_64-linux-gnu -lmysqlclient

例如我的
(1) 执行命令 whereis mysql

rain@rain-virtual-machine:/usr/lib/x86_64-linux-gnu$ whereis mysql
mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

可以看到 /usr/include/mysql 路径

(2) 执行命令 locate libmysqlclient.so

rain@rain-virtual-machine:/usr/lib/x86_64-linux-gnu$ locate libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.2.35

3.点开 pri 文件, 然后注释掉第 4 行代码即可
在这里插入图片描述
4. 在 /home/rain/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql 目录下, 打开终端, 执行如下代码

 /home/rain/Qt/5.15.2/gcc_64/bin/qmake mysql.pro
 // 注意 rain是当前的用户名, 路径也是根据你自己安装的Qt路径来

5.然后mysql源码文件夹里多了个 MakeFile
在这里插入图片描述
然后 makemake install

rain@rain-virtual-machine:~/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql$ make Makefile
make: “Makefile”已是最新。

rain@rain-virtual-machine:~/Qt/5.15.2/Src/qtbase/src/plugins/sqldrivers/mysql$ make install Makefile
输出省略

6.然后就可以在mysql前一个目录(sqldrivers)得到一个 plugins,打开里面的 sqldrivers 有两个文件, 就标志着编译成功了
在这里插入图片描述

7.然后将两个文件放入编译器的 /home/rain/Qt/5.15.2/gcc_64/plugins/sqldrivers 中, 大功告成~~

测试程序

pro 里加个 sql 模块

#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>


qDebug() << QSqlDatabase::drivers();                                     
                                                                         
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");                   
db.setHostName("localhost");                                            
db.setUserName("root");                                                 
db.setPassword("1234");                                                 
db.setPort(3306);                                                       
db.setDatabaseName("mysql");                                             
                                                                        
qDebug() << (db.open() ? "open db success." : "open db failed.");                                      
                                                                         
QSqlQuery cursor;                                                        
                                                                         
QString query = " SELECT user, host FROM user; ";                        
                                                                         
if (cursor.exec(query)) {                                                
    while (cursor.next()) {                                              
        qDebug() << "user: " << cursor.value("user").toString()          
                 << "host: " << cursor.value("host").toString();         
    }                                                                    
}                                                                        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/304086.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Debugger断点调试以及相应面板介绍

断点&#xff08;包含条件断点&#xff09;调试以及相应面板介绍 ​ 先准备两个函数&#xff0c;在bar函数中使用debugger&#xff0c;代码如下。 function foo() {let result 0for (let i 0; i < 10; i) {result i}result bar(result)return result}function bar(resu…

SpringBoot-开启Actuator监控

Spring Boot Actuator是Spring Boot提供的一种管理和监控应用程序的框架&#xff0c;可以帮助我们了解应用程序的运行状况&#xff0c;提供HTTP端点来暴露应用程序的不同方面&#xff0c;如健康状况、指标、日志和运行时信息等。 开启Actuator监控&#xff0c;我们可以通过HTT…

Spring Boot + MinIO 实现文件切片极速上传

1. 引言 在现代Web应用中,文件上传是一个常见的需求,尤其是对于大文件的上传,如视频、音频或大型文档。为了提高用户体验和系统性能,文件切片上传技术逐渐成为热门选择。 本文将介绍如何使用Spring Boot和MinIO实现文件切片极速上传技术,通过将大文件分割成小片段并并行上…

Photoshop Express一款出色的照片编辑器

​【应用名称】&#xff1a;Photoshop Express ​【适用平台】&#xff1a;#Android ​【软件标签】&#xff1a;#Photoshop ​【应用版本】&#xff1a;12.1.2 ​【应用大小】&#xff1a;223MB ​【软件说明】&#xff1a;软件升级更新。一款出色的照片编辑器&#xff0c…

[蓝桥杯学习] 树链剖分

定义 将树分割成若干条链&#xff0c;以维护树上的信息&#xff0c;若无特殊需求&#xff0c;一般是重链剖分。 重链剖分 如何重链剖分 两个dfs 第一个dfs是预处理各个结点的基本信息&#xff0c;第二个dfs是利用信息进行剖分&#xff08;dfs序&#xff09; 操作步骤 第一…

YOLOv8 Ultralytics:使用Ultralytics框架进行姿势估计

YOLOv8 Ultralytics&#xff1a;使用Ultralytics框架进行姿势估计 前言相关介绍前提条件实验环境安装环境项目地址LinuxWindows 使用Ultralytics框架进行姿势估计参考文献 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可…

深入理解云原生技术:构建现代化可靠的应用

引言 云原生技术作为软件开发和部署的新范式&#xff0c;以其高度可伸缩性、灵活性和可靠性&#xff0c;吸引了广泛的关注。本文将深入探讨云原生技术的核心概念、优势以及其在现代软件开发中的应用。 1. 什么是云原生技术&#xff1f; 云原生技术是一种以云计算为基础&#…

探索Redis特殊数据结构:HyperLogLog在基数统计中的应用

一、概述 Redis官方提供了多种数据类型&#xff0c;除了常见的String、Hash、List、Set、zSet之外&#xff0c;还包括Stream、Geospatial、Bitmaps、Bitfields、Probabilistic&#xff08;HyperLogLog、Bloom filter、Cuckoo filter、t-digest、Top-K、Count-min sketch、Confi…

31-35.玩转Linux操作系统

玩转Linux操作系统 说明&#xff1a;本文中对Linux命令的讲解都是基于名为CentOS的Linux发行版本&#xff0c;我自己使用的是阿里云服务器&#xff0c;系统版本为CentOS Linux release 7.6.1810。不同的Linux发行版本在Shell命令和工具程序上会有一些差别&#xff0c;但是这些差…

1.2 Hadoop概述

小肥柴的Hadoop之旅 1.2 Hadoop概述 目录1.2 Hadoop概述1.2.1 回归问题1.2.2 Google的三篇论文1.2.3 Hadoop的诞生过程1.2.4 Hadoop特点简介 参考文献和资料 ) 目录 1.2 Hadoop概述 1.2.1 回归问题 通过前一篇帖子的介绍&#xff0c;特别是问题思考部分的说明&#xff0c;我…

list容器

list容器 文章目录 list容器一、头文件二、基本概念三、构造函数四、赋值和交换五、大小操作六、插入和删除七、存取操作八、反转和排序 一、头文件 #include <list>二、基本概念 功能: 将数据进行链式存储 链表(list) 是一种物理存储单元上非连续的存储结构,数据元素的…

Marching Cubes算法再回顾

1,确定包含等值面的体元 首先介绍一下 体元的概念&#xff0c;体元是三维图像中由相邻的八个体素点组成的正方体方格&#xff0c;英语也叫 Cube&#xff0c;体元中角点函数值分为两种情况&#xff0c;一种是大于等于给定等值面的值 C0 ,则将角点设为 1 称该角点在等值面内部&a…

Linux 部署 AI 换脸

我使用的系统是 Ubuntu 20.04 文章实操主要分为以下几个部分 1、python 环境安装 2、下载 FaceFusion 上传服务器 3、创建 python 虚拟环境 4、下载 FaceFusion 依赖&#xff08;这里的命令执行时间会很长&#xff0c;够你睡午觉了&#xff09; 5、运行 FaceFusion 6、开…

Python 自学(七) 之面向对象

目录 1. 类的初始化函数 __init__ P186 2. 动态的为类和对象添加属性 P190 3. 类的访问限制 __xxx P192 4. 类的继承及方法重写 P197 1. 类的初始化函数 __init__ P186 每当创建一个类的实例时&#xff0c;__init__都会被执…

离线安装harbor:使用docker-compose方式

目录 一、安装docker二、安装docker-compose1、下载docker-compose2、安装docker-compose3、验证安装效果 三、安装harbor1、下载harbor2、解压harbor3、修改harbor.yml4、安装harbor5、修改docker配置文件6、配置harbor自启动 四、登录harbor五、测试harbor1、测试在linux上登…

行云部署成长之路 -- 慢 SQL 优化之旅 | 京东云技术团队

当项目的SQL查询慢得像蜗牛爬行时&#xff0c;用户的耐心也在一点点被消耗&#xff0c;作为研发&#xff0c;我们可不想看到这样的事。这篇文章将结合行云部署项目的实践经验&#xff0c;带你走进SQL优化的奇妙世界&#xff0c;一起探索如何让那些龟速的查询飞起来&#xff01;…

使用Redhat操作系统下载MySQL

一、本地下载安装 方法一 ①在虚拟机火狐浏览器中搜索MySQL官网&#xff08;选择第一个下载&#xff09; ②下载完毕使用xshell远程连接解压及安装 [rootlocalhost ~]# cd /Downloads/ [rootlocalhost Downloads]# mkdir /mysql/ [rootlocalhost Downloads]# mv mysql-8.0.3…

北斗短报文技术在灾区通讯救援中的应用与价值

北斗短报文技术在灾区通讯救援中的应用与价值 随着全球化的进程和科技的快速发展&#xff0c;人类社会在取得巨大经济成果的同时&#xff0c;也面临了许多自然灾害的挑战。地震、洪水、台风等天灾频繁发生&#xff0c;严重威胁着人们的生命财产安全。灾害发生时&#xff0c;及…

视频AI智剪方法:快速批量处理视频,批量剪辑视频的操作

随着科技的飞速发展&#xff0c;视频内容已是获取信息和娱乐的主要方式之一。对于视频创作者和内容生产者来说&#xff0c;如何快速、高效地处理和剪辑大量视频已成为一项重要的需求。现在借助AI技术的不断发展&#xff0c;可以更加智能、高效的处理视频。下面来看云炫AI智剪如…

深度学习:图神经网络——在推荐系统中的应用

PinSage是工业界应用图神经网络完成推荐任务的第一个成功案例&#xff0c;其从用户数据中构造图&#xff08;graph&#xff09;的方法和应对大规模图而采取的实现技巧都值得我们学习。PinSage被应用在图片推荐类Pinterest上。在Pinterest中&#xff0c;每个用户可以创建并命名图…