记录ARM平台linux->ubuntu系统下Qt交叉编译环境搭建过程,避免忘记。我们知道QTcreator。这仅仅是个IDE,他包含了一个编译器--qmake。这两者的关系与codeblocks和g++的关系一样。
未完待续…
1、QT 5.15编译
编译目标程序地址:vedderb/vesc_tool: The source code for VESC Tool. See vesc-project.com (github.com)
本次程序安装版本建议使用QT5.15,Qt 官网有一个专门的资源下载网站,所有的开发环境和相关工具都可以从这里下载,具体地址是:http://download.qt.io/
从QT5.15.0版本开始,官方不再提供离线版安装包,除非充钱买商业版。下载地址:https://download.qt.io/archive/qt/5.15/
因为后面要在开发板上跑qt程序,所以必须下载QT源码包,然后用交叉编译工具进行编译,才能得到在目标平台上可以运行的qt SDK。选择其中single版本,它是全部整合在一起了的https://download.qt.io/archive/qt/5.15/5.15.8/single/
2、QT源码编译
更新软件源和升级更新软件,输入如下指令:
1 | sudo apt-get update |
我们的设备是64位的处理器,下载安装编译器:aarch64-linux-gnu-gcc,查看哪些版本可以安装的命令:sudo apt-cache search aarch64
接下来的编译器版本号安装,要看清自己系统下有哪个版本编译器就使用然后通过apt-get install安装对应的版本即可。
安装完成后可以通过如下命令查看版本信息:
1 | aarch64-linux-gnu-gcc -v |
安装完编译器后解压qt-everywhere-opensource-src-5.15.8.tar.xz解压命令tar -xvf qt-everywhere-opensource-src-5.15.9.tar.xz
在编译之前先定义好Qt5.15的SDK路径,编译前确定好SDK路径,创建目录/opt/qt-5.15-arm64用于存放。
1 | sudo mkdir qt-5.15-arm64 |
其中-prefix选项后面的路径就是定义的Qt SDK路径,以上configure相关参数可以差异qt config参数注释。
3、ARM linux程序编译完成打包
3.1、准备
打包命令:
1 | sudo chmod a+x pack_lib.sh # 增加执行权限 |
打包脚本,pack_lib.sh:
1 |
|
3.2、开始打包
- 程序编译完成后,新建一个文件夹用于存放文件,例如新建文件夹vesc_tool_3_01_arm
1 | mkdir vesc_tool_3_01_arm |
- 复制可执行文件到该文件夹:
1 | cp vesc_tool_3.01 ../vesc_tool_3_01_arm/ |
- 创建lib文件夹,用于存放先关库:
1 | mkdir lib |
- 将pack_lib.sh拷贝到vesc_tool_3_01_arm文件夹中
1 | cp pack_lib.sh ../../test_hmi/HMI_1.01/ |
- 查看文本内容,并添加权限:
1 | vi pack_lib.sh |
- 生成包,然后拷贝到新的arm设备上运行。
1 | sudo tar -cvf vesc_tool_3_01_arm.tar vesc_tool_3_01_arm/ |
pack_lib.sh使用方式:
1 | sudo chmod a+x pack_lib.sh # 增加执行权限 |
3.3、vesc tool 3.01 arm版本编译后,程序使用
3.3.1、错误提示
1 | marvsmart@rk356x:~/erik20230831/vesc_tool_3_01_arm$ ./vesc_tool_3.01 |
提示缺少:libxcb-xinput,我们使用命令安装:sudo apt install libxcb-xinput-dev
由于我们的vesc tool界面全部是英文,而HMI有中文,所以运行HMI时候需要将字体文件拷贝到OPT文件目录下。错误信息如下:
1 | QFontDatabase: Cannot find font directory /opt/Qt/5.15-static/lib/fonts. |
3.3.2、程序运行脚本
编写一个运行程序的脚本AppRun.sh,每次运行时候执行脚本即可。
1 |
|
4、window系统下打包
由于QT程序中有使用QML,所以打包时候需要表明QML的地址。记住,使用qt自动的命令行工具,否则容易出现未知的错误。测试成功的命令:
1 | windeployqt.exe G:\7.vesc_tool\exe>Energy_Storage_1.01.exe --qmldir D:\apps\QT\5.15.2\mingw81_64\qml |
注意,qmlPath 指的是你的项目中 qml 文件所在的文件路径,切勿被网络上错综复杂的文章误导指向Qt安装目录下的 qml 文件夹!
1 | D:\apps\QT\5.15.2\mingw81_64\bin>windeployqt.exe --qmldir G:\7.vesc_tool\build\06_HMI_mobile\vesc_tool-release_6_02\mobile G:\7.vesc_tool\exe_for_mobile_1\vesc_tool_6.02_for_mobile.exe |
项目QML路径:G:\7.vesc_tool\build\06_HMI_mobile\vesc_tool-release_6_02\mobile
