开发环境
- 编译环境:Debian 10 | Win10 1903 X64
- 开发工具:android-ndk-r14b-linux-x86_64 | android-ndk-r20-windows-x86_64
- 参考项目:官方文档 | MySQL_Driver_Qt
- 所需源码:libiconv | openssl | mariadb-connector-c | qtbase-everywhere-src-5.12.5
因为我Debian系统中没有安装QT,所以在Debian下交叉编译相关库后拷贝到Win系统下使用对应版本的qmake编译mysql模块
我这里编译的是Arm64架构的库,交叉编译库所使用的编译工具为android-ndk-r14b,高版本交叉编译时会出错
因为MySQL怎么编译都通不过所以选择了MariaDB,而MariaDB库依赖libiconv和openssl,所以它们也需要编译
1 | # 设置交叉编译环境 |
编译libiconv库
1 | wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz |
编译OPENSSL库
1 | wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz |
编译MariaDB库
1 | wget http://mirrors.nav.ro/mariadb//connector-c-2.3.7/mariadb-connector-c-2.3.7-src.tar.gz |
Linux下编译QT模块
1 | # 除了设置NDK环境外,还应指定qmake |
Win32下编译QT模块
1 | # 设置NDK编译环境,交叉编译生成的库拷贝到D:\Qt\Arm64下 |
问题解决
- 如果qmake报错找不到:qtsqldrivers-config.pri,则新建它,内容如下两行:
1 | # 文件位置:qtbase-everywhere-src-5.12.5/src/plugins/sqldrivers/qtsqldrivers-config.pri |
- 安装完成后会在下面路径看到多了两个文件
1 | D:\Qt\Qt5.12.5\5.12.5\android_arm64_v8a\plugins\sqldrivers\libqsqlmysql.so |