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

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.dtcms.com/a/313871.html

相关文章:

  • 基于鼠标位置的相机缩放和平移命令的实现(原理+源码)
  • Prompt Engineering
  • 赛博威携手Dify,助力AI在企业的场景化落地
  • 【数据库】使用Sql Server创建索引优化查询速度,一般2万多数据后,通过非索引时间字段排序查询出现超时情况
  • Linux(centos)安全狗
  • Linux 用户与组管理全解析
  • 采购管理工具的实施方法论:三阶段框架与常见问题解决方案
  • RHCA02
  • How To Say - AI多语言表达工具
  • 【前端:Html】--1.3.基础语法
  • el-table高度自适应vue页面指令
  • 第二十三天(APP应用产权渠道服务资产通讯抓包静态提取动态调试测试范围)
  • Jetbrains IDE总是弹出“需要身份验证”窗口
  • 算法11. 盛最多水的容器
  • leetcode-sql-3497分析订阅转化
  • 优选算法 力扣 11. 盛最多水的容器 双指针降低时间复杂度 贪心策略 C++题解 每日一题
  • 验证码等待时间技术在酒店自助入住、美容自助与社区场景中的应用必要性研究—仙盟创梦IDE
  • Flask + HTML 项目开发思路
  • 【BUUCTF系列】[极客大挑战 2019]LoveSQL 1
  • 同质无向加权图:理论基础、算法演进与应用前沿
  • MySQL偏门但基础的面试题集锦
  • 理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事
  • IM消息数据库调研
  • Lecture 1 Overview and Tokenization 课程笔记
  • Go语言select
  • Redis真的是单线程的吗?
  • 跟着顶刊学写论文-摘要1
  • codeBuddy IDE 使用教程
  • Web 开发 12
  • ZYNQ-按键消抖