银河麒麟(Kylin) - V10 GFB高级服务器操作系统ARM64 QT-5.12.10-UnixOdbc-编译QODBC的libqsqlodbc.so【MYSQL数据库】
原因
项目需求在QT-5.12.10版本支持QODBC,需要连接MYSQL数据库,QTdemo验证ODBC连接MySQL数据库成功

测试环境
测试服务器配置
型号:L21-2041K测试板
CPU:Hi1616 (2.4GHz)
内存:64G
硬盘:512G SSD
系统:Kylin-Server-V10-GFB-Release-030.1.1
平台架构:ARM
准备工作
- 银河麒麟V10操作系统
- QT - 5.12.10版本
- MySQL - 8.0.28版本
- UnixOdbc驱动
- QTdemo验证
编译
编译QT - 5.12.10
已安装 QT - 5.12.10 跳过此步骤
-
去QT官网下载QT 5.12.10 源码
-
确保系统的gcc,g++, python, perl等符合Qt安装要求,具体请参见Qt源码内的README文档
-
编译安装QT
- 进入qt-everywhere-src-5.12.10 目录执行以下命令:
./configure -prefix /opt/qt5.12.10 -qt-xcb -nomake tests -nomake examples
make -j64 #-j64为编译时多核优化,视物理机而定
make install #然后执行安装
编译中途报错缺少库依赖,自行安装缺少的库。
联网使用yum命令安装OpenGL
yum install mesa-libGLU-devel-9.0.1-1.ky10.aarch64
yum install mesa-libGLU-9.0.1-1.ky10.aarch64
yum install mesa-libGL-20.1.4-1.p01.ky10.aarch64
安装gperf依赖以及安装包
yum install gperftools-devel-2.8-1.ky10.aarch64
yum install gperf-help-3.1-7.ky10.noarch
yum install gperftools-2.8-1.ky10.aarch64
yum install gperf-3.1-7.ky10.aarch64
如果版本过低会自动匹配下载更新版本
如果安装xcb完成还出现这个问题提示是xcb没有,我发现其实并不是这个问题,是相关依赖没有安装造成的,就是xcb所有安装包都安装,还是会报这个问题。
解决办法:
yum install libxklavier-5.4-18.ky10.aarch64
yum install libxkbcommon-devel-0.8.4-3.ky10.aarch64
yum install libxkbfile-1.1.0-2.ky10.aarch64
yum install libxkbcommon-0.8.4-3.ky10.aarch64
yum install libxkbcommon-x11-devel-0.8.4-3.ky10.aarch64
yum install libxkbcommon-x11-0.8.4-3.ky10.aarch64
- 安装完成

- 安装MySQL
sudo yum install mysql-server
yum软件管理器会自动MySQL相关依赖如图:

MySQL全部相关依赖如图:

安装完成

首次安装没有密码,用户名:root
- 安装UnixOdbc
sudo yum install unixODBC-devel.aarch64


如果需要unixODBC-2.3.12 下载源码编译
- 解压unixodbc文件:
sudo tar -xvf unixODBC-2.3.12.tar.gz
- 进入unixODBC-2.3.12目录执行以下命令:
sudo ./configure #负责在使用的系统上准备好软件的构建环境
make -j64 #-j64为编译时多核优化,视物理机而定
make install #然后执行安装
- 编译mysql-connector-odbc-8.0.26
- 解压 mysql-connector-odbc-8.0.26-src 文件:
sudo tar -xvf mysql-connector-odbc-8.0.26-src.tar.gz
安装必要的编译工具
sudo yum install -y \
cmake \
make \
gcc-c++ \
unixODBC-devel \
mysql-devel \
openssl-devel \
libtool \
autoconf \
automake

- 创建独立的构建目录
mkdir build
cd build
- 编译 mysql-connector-odbc-8.0.26
cmake .. \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-connector-odbc \
> -DWITH_UNIXODBC=1 \
> -DCMAKE_BUILD_TYPE=Release

sudo make -j 60 #-j60为编译时多核优化,视物理机而定


sudo make install #然后执行安装

默认安装路径为 /usr/local/,驱动文件为 libmyodbc8w.so或libmyodbc8S.so

- 配置ODBC
- 注册驱动到 odbcinst.ini
[MySQL]
Description=ODBC for MySQL
Driver=/usr/local/mysql-connector-odbc/lib/libmyodbc8w.so
Setup=/usr/local/mysql-connector-odbc/lib/libmyodbc8S.so
Driver64=/usr/local/mysql-connector-odbc/lib/libmyodbc8w.so
Setup64=/usr/local/mysql-connector-odbc/lib/libmyodbc8S.so
FileUsage=1
UsageCount=3

- 验证驱动注册
sudo odbcinst -q -d # 应显示 "MySQL"

- 配置数据源(DSN)
[MyDB]
Description = MySQL Test Database
Driver = MySQL
Server = localhost
Database = mysql
Port = 3306
User = root
Socket = /var/lib/mysql/mysql.sock
Option = 3

- 测试连接
sudo isql -v MyDB # 成功应返回 "Connected!"

- 连接成功
- 编译QT5.12.8-ODBC
- 修改qsqldriverbase.pri
sudo vim qt-everywhere-src-5.12.10/qtbase/src/plugins/sqldrivers/qsqldriverbase.pri
- 修改include内容,将qtsqldrivers-config.pri替换为configure.pri。

- 修改odbc.pro文件
- 修改QT源码目录odbc.pro文件,注释QMAKE_USE += odbc。

- 进入qt-everywhere-src-5.12.8/qtbase/src/plugins/sqldrivers/odbc
如果qmake已添加到环境变量,可以直接使用qmake,如果没有添加,可使用/opt/qt5.12.10/bin/qmake
sudo /opt/qt5.12.10/bin/qmake #生成 Makefile 文件
make -j64 #-j64为编译时多核优化,视物理机而定

如果编译中出现报错
-
原因:未正确链接 ODBC 库。
-
解决:
# 显式指定库全路径(示例):
qmake -- "LIBS += -L/usr/local/lib -lodbc"
LIBS:UnixOdbc安装路径
或者把路径写进odbc.pro

cd /home/zhang/qt-everywhere-src-5.12.8/qtbase/src/plugins/sqldrivers # 进入驱动目录
make distclean # 清理旧配置
sudo /opt/qt5.12.10/bin/qmake #生成 Makefile 文件
make -j64 #-j64为编译时多核优化,视物理机而定

- 生成libqsqlodbc.so

- 拷贝libqsqlodbc.so
拷贝libqsqlodbc.so到/opt/qt5.12.10/plugins/sqldrivers/目录下,该目录是QT安装目录,至此QODBC的动态库编译完成。
QT验证

完成
编译成功:Kylin-Server-V10-GFB-Release-030.1.1-libqsqlodbc.so
数据库驱动源码:mysql-connector-odbc-8.0.26-src

1783

被折叠的 条评论
为什么被折叠?



