在x86平台上,编译运行于arm64平台上的Qt程序,操作系统为Ubuntu20.04
1.安装编译需要的所有组件
sudo apt install build-essential libgl1-mesa-dev gperf libclang-dev -y
安装python环境
sudo apt install python -y
sudo apt install python-dev -y
sudo apt install python-pip -y
安装arm64交叉编译工具链
sudo apt install g++-aarch64-linux-gnu -y
sudo apt install gcc-aarch64-linux-gnu -y
2.Qt交叉编译
下载Qt源码:https://download.qt.io/archive/qt/
我下载的是5.12.2版本, qt-everywhere-src-5.12.2.tar.xz
mkdir Qt5.12.2
tar -xvf qt-everywhere-src-5.12.2.tar.xz #解压到该文件夹下
配置编译Qt5的aarch64参数:
cd qt-everywhere-src-5.12.2/
./configure -release -opensource -confirm-license -xplatform linux-aarch64-gnu-g++ -prefix /home/Qt5.12.2/qt5.12.2arm -nomake examples -no-opengl -silent -qpa linuxfb
##/home/Qt5.12.2/qt5.12.2arm 为编译后的安装位置。
编译:
make -j 12
安装:
sudo make install
查看编译的Qt程序是否为arm架构:
readelf -h libQt5Xml.so
3.编译报错
报错:error:‘SIOCGSTAMP’ was not declared in this scope
解决方法:这个问题是缺少了头文件,找到socketcanbackend.cpp并打开,添加#include<linux/sockios.h>即可。
参考:Qt5交叉编译