为了给嵌入式开发提供后期的debug平台,现需要搭建一个基于QT的图形化界面。于是开始进行QT的交叉编译,记录一下方便以后复现。
开发环境:
- 开发板:ARM64架构的RK3399PROX
- 本地电脑:X86的Ubuntu18.04虚拟机
需求:
- 虚拟机需要有25G的可用空间
1. 在开发板上安装QT模块
因为一切以开发板为主,因此优先在开发板上安装QT。事后根据开发本的QT版本,在本地电脑安装对应版本的QT。
sudo apt-get update
sudo apt-get install qt5-default
sudo apt-get install qtcreator
sudo apt-get install qtmultimedia5-dev
sudo apt-get install libqt5serialport5-dev
安装完以后,在开发板上运行QT Creator,查看其QT版本。
笔者RK3399ProX的QT版本为5.11.3。稍后我们将在我们自己的PC上进行相同qt源码的交叉编译。,这样做的目的有:
- 不需要拷贝动态库到主机,减少麻烦
- 匹配开发板的QT,减少不匹配导致的各种问题
2. 下载对应版本的QT源代码,准备进行编译
前往QT的官方下载地址:点我跳转
笔者的开发板QT为5.11.3,但是QT官网已经因为bug下架了此版本,因此笔者选择了最接近的一个5.12.1(5.12.0交叉编译会报错)。
选择版本,进入single文件夹,选择qt-everywhere-src-5.12.1.tar.xz
3. 进行QT源码编译
- 使用sudo nautiles,将下载好的文件放到/usr/local/文件夹内并解压。
- 然后使用touch temp创建一个文件,用于编写编译脚本。
下面附上笔者的编译脚本,注释如下
#!/bin/bash
./configure -prefix /usr/local/qt_cross \
-opensource \
-confirm-license \
-xplatform linux-aarch64-gnu-g++ \
-debug \
-no-opengl \
- -prefix 为选择make install后的安装路径,可以自行选择
- -opensource为选择安装开源版本
- -confirm-license为同意协议
- -xplatform为交叉编译器,具体如何查看一会儿会说
- -debug
- -no-opengl:因为开发板不支持opengl所以选择不包括opengl
关于交叉编译器,进入到解压后的qt-everywhere文件夹,qtbase/mkspecs/ 里面为所有的支持的交叉编译器。以前的文章有提到,笔者交叉编译opencv时就安装了aarch-linux-gun-gcc,所以这里就选择这个linux-aarch-gnu-g++。查看里面的.conf文件,确实也是之前安装的编译器(如果没有你的交叉编译器,可以选择一个手动修改里面的.conf文件)。
一切就绪以后,将之前创建的temp文件放到qt-everywhere根目录里。使用sudo chmod 777 temp富裕它最高权限,然后./temp运行。等待几分钟就会配置完成。之后使用如下命令make与make install进行安装即可完成。
make -j4
make install
根据电脑的性能,make可能需要1-10小时不等。笔者使用4核心8线程的虚拟机编译了1个小时,可供参考时间(R9 5900HX)。
文章评论