前言
背景
使用系统自带的(不是自己下载编译的)Qt 5.12.8 运行Qt Creator 项目
但是系统自带的Qt缺少一些库,比如本文提到的 qtvirtualkeyboard 库
因此需要编译同版本的模块库文件
编译平台
Mac Mini 下的VMware Fusion虚拟机 — aarch64环境下直接编译源码,无需交叉编译
qt___5128_7">默认的qt版本 === 5.12.8
步骤
官网下载Qt 5.12.8 源码压缩包并解压 qt-everywhere-src-5.12.8
编译整个 Qt 源码
- 源码目录同级目录下创建
build5.12.8
(存放编译过程中文件)、linux_aarch64
(存放编译后的文件)文件夹,创建配置脚本文件autoConfigure.sh
:
../qt-everywhere-src-5.12.8/configure \-prefix ../linux_aarch64 \-nomake examples \-nomake tests \-skip qtwebengine \-skip qtcharts \-skip qt3d \-skip qtdeclarative \-skip qtquickcontrols \-skip qtquickcontrols2 \-skip qtmultimedia \-skip qtwebsockets \-skip qtlocation \-skip qtsensors \-skip qttools \-skip qttranslations \-v
- 执行脚本,进行编译安装
sudo chmod +x autoConfigure.sh
./autoConfigure.sh
make
sudo make install
4.查看 linux_aarch64 目录
至此按理说 qt 模块除了 skip 的几个应该都编译成功,但是查看时并没有发现 qtvirtualkeyboard 相关的文件,且在configure 阶段就没有配置出来。
于是决定单独编译 qtvirtualkeyboard 模块源码:
qtvirtualkeyboard__48">单独编译 qtvirtualkeyboard 模块
-
进入 Qt 源码目录,找到 qtvirtualkeyboard
文件夹进去
-
执行
:没有特意指明编译后的文件路径,因此会放在系统设置的默认Qt版本目录下
qmake qtvirtualkeyboard.pro
make
sudo make install
过程中会报错,有关于 QtGUI 和 QtCore 的,
原因是 qtvirtualkeyboard 源码调用依赖到这两个模块的头文件,但是前文提到系统自带的 Qt 缺少一些库(文件,文件夹),因此编译源码时会报错。
(推测前面编译整个 Qt 源码时没有编译出 qtvirtualkeyboard 模块也是因为依赖的库文件不存在,因此跳过了)
- 移动第一阶段编译 Qt 源码后的两个模块的相关private文件
sudo cp -r /home/sr/Public/qt5/qt5.12.8-1/linux_aarch64/include/QtGui/5.12.8 /usr/include/aarch64-linux-gnu/qt5/QtGui/
sudo cp -r /home/sr/Public/qt5/qt5.12.8-1/linux_aarch64/include/QtCore/5.12.8/ /usr/include/aarch64-linux-gnu/qt5/QtCore/
- 重复步骤2命令,编译安装成功!