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

QT:交叉编译mysql驱动库

最近在移植开发中需要用到mysql驱动库,但是从Qt 5.12版本开始,官方不再在源码中默认包含MySQL数据库驱动,用户需要自行编译MySQL驱动插件。所以需要自行编译目标平台的mysql驱动库。

目标平台:aarch64
qt版本:5.15.4 (源码)
mysql版本:8.0.42(aarch64)
qmake:5.15.4 (x86,用的是交叉工具链中的qmake)

一、qt源码下载

参考:

二、Mysql下载

下载Mysql主要是因为编译mysql驱动需要用到mqsql.h和libmysqlclient.so这两个文件。这两文件要么用mysql源码编译出来,要么下载对应版本的mysql获取

mysql下载:https://downloads.mysql.com/archives/community/

根据需求选择对应的mysql版本,我这里选择mysql8.0.42 + aarch64(对应目标平台)

解压

下载完后解压mysql-8.0.43-linux-glibc2.28-aarch64.tar,解压完后会有三个压缩包。再解压mysql-8.0.43-linux-glibc2.28-aarch64.tar.xz,在include和lib目录下可以看到所需要的mqsql.h和libmysqlclient.so这两个文件

三、编译mysql驱动

1、在qt源码进入mysql编译路径,一般是在源码路径下/qtbase/src/plugins/sqldrivers/mysql。

2、修改mysql.pro文件,配置交叉编译环境

TARGET = qsqlmysqlHEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp#注释掉避免编译报错
#QMAKE_USE += mysqlOTHER_FILES += mysql.jsonPLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)# MySQL 头文件和库路径(交叉编译版本)
INCLUDEPATH += /home/embedsky/Downloads/mysql/mysql-8.0.43-linux-glibc2.28-aarch64/include
LIBS += -L/home/embedsky/Downloads/mysql/mysql-8.0.43-linux-glibc2.28-aarch64/lib -lmysqlclient# so输出路径
DESTDIR = /home/embedsky/Desktop/mysqlTest# 手动指定交叉 Qt 的头文件和库路径
INCLUDEPATH += /opt/EmbedSky/TQ3568/aarch64-embedsky-linux-gnu/sysroot/usr/local/Qt-5.15.4/include
INCLUDEPATH += /opt/EmbedSky/TQ3568/aarch64-embedsky-linux-gnu/sysroot/usr/local/Qt-5.15.4/include/QtSql
INCLUDEPATH += /opt/EmbedSky/TQ3568/aarch64-embedsky-linux-gnu/sysroot/usr/local/Qt-5.15.4/include/QtCore

3、配置环境变量。在当前路径/qtbase/src/plugins/sqldrivers/mysql下执行该脚本:source bash.sh

#!/bin/bash# 设置交叉编译工具链的前缀
export CROSS=aarch64-embedsky-linux-gnu# 设置目标平台的 sysroot 路径
export SYSROOT=/opt/EmbedSky/TQ3568/aarch64-embedsky-linux-gnu/sysroot# 设置工具链路径
export PATH=/opt/EmbedSky/TQ3568/bin:$PATH# 设置交叉编译器的相关环境变量
export CC=${CROSS}-gcc
export CXX=${CROSS}-g++
export LD=${CROSS}-ld
export STRIP=${CROSS}-strip# 交叉编译时,设置 sysroot 路径
export CFLAGS="--sysroot=${SYSROOT}"
export CXXFLAGS="--sysroot=${SYSROOT}"# 输出确认信息
echo "Cross compilation environment setup complete."
echo "CROSS: ${CROSS}"
echo "SYSROOT: ${SYSROOT}"
echo "PATH: ${PATH}"
echo "CC: ${CC}"
echo "CXX: ${CXX}"
echo "LD: ${LD}"

4、执行qmake命令

qmake mysql.pro

执行完后提示找不到qtsqldrivers-config.pri文件,可以忽略;并且在当前目录下已成功生成makefile文件

5、执行make命令

make

执行完后可以在so输出路径下得到mysql驱动libqsqlmysql.so驱动库。

http://www.xdnf.cn/news/17152.html

相关文章:

  • 【测试】⽤例篇
  • 【Pytorch✨】LSTM04 l理解长期记忆和短期记忆
  • springboot博客实战笔记01
  • Linux-Day02.Linux指令
  • AI开灯的几种方法,与物理世界的交互过渡
  • 量化大型语言模型的评估
  • SparkSQL—sequence 函数用法详解
  • LeetCode 135:分糖果
  • Vue3学习笔记
  • AI小说创作工具体验:本地部署助力文学创作,Ollama+AIStarter一键搞定
  • Prompt Engineering
  • 嵌入式硬件篇---OpenMV存储
  • 疏老师-python训练营-Day35模型可视化推理
  • 华奥系科技奥采01:重新定义物联网数据采集标准
  • OpenLayers 详细开发指南 - 第八部分 - GeoJSON 转换与处理工具
  • DC-DC的分压反馈电阻怎么取值
  • 16_OpenCV_漫水填充(floodFill)
  • 最大重复子字符串
  • 数据分页异步后台导出excel
  • 2025年渗透测试面试题总结-2025年HW(护网面试) 85(题目+回答)
  • JMeter的基本使用教程
  • HarmonyOS 多屏适配最佳实践:基于 ArkUI 的响应式 UI 方案
  • 深入理解Java的SPI机制,使用auto-service库优化SPI
  • 北京JAVA基础面试30天打卡01
  • Neo4j 社区版 Mac 安装教程
  • 从HTTP到WebSocket:打造极速实时通讯体验
  • [3D数据存储] Archive (File Container) | 创建/写入/读取 | 存储格式HDF5
  • RocketMQ与Kafka 消费者组的‌重平衡操作消息顺序性对比
  • 低空三维多物理场耦合风洞试验,保证飞行器的性能安全是低空飞行的底线,是低空经济发展的基础
  • Ethereum: 深度解析Web3世界的合规之门, ERC-1400证券型代币标准