1.下载arm交叉编译程序
- 源码下载地址:Downloads | GNU-A Downloads – Arm Developer
要根据目标系统选择编译器版本,我的主板:
aarch64bit体系结构(arm 64bit),linux内核GNU操作系统=GNU/Linux操作系统(简称linux)
大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中。
小端模式(Little-endian),是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。
经过网上分享的代码测试发现我的是小端。
(在我对操作系统及内核不了解的情况下写的是arm64位小端)
所以选择图中位置
(aarch64-none-linux-gnu):arm64位 linux裸机
(aarch64-none-linux-gnu):arm64位 linux小端
(aarch64_be-none-linux-gnu):arm64位 linux大端
- 解压文件
tar -xvf gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz
- 拷贝文件到合适的位置(我的位置: /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu)
- 目录内容如下
该内容用于配置qt内部的qmake.conf文件
2.编译arm的qt项目源码
- qt源码下载路径:https://download.qt.io/archive/qt/5.12/5.12.12/single/
- 解压文件
tar -xvf qt-everywhere-src-5.12.12.tar.xz
- 拷贝文件到合适的位置(我的位置:/home/huhu/third_part/qt-everywhere-src-5.12.12 /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu)
- 进入/home/huhu/third_part/qt-everywhere-src-5.12.12/qtbase/mkspecs目录下找到linux-aarch64-gnu-g++ 拷贝到linux-none-aarch64-gnu-g++:
cp -r linux-aarch64-gnu-g++ linux-none-aarch64-gnu-g++
- 进入拷贝后的linux-none-aarch64-gnu-g++文件夹编辑qmake.conf文件结果如下:
#
# qmake configuration for building with aarch64-none-linux-gnu-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = aarch64-none-linux-gnu-gcc
QMAKE_CXX = aarch64-none-linux-gnu-g++
QMAKE_LINK = aarch64-none-linux-gnu-g++
QMAKE_LINK_SHLIB = aarch64-none-linux-gnu-g++
# modifications to linux.conf
QMAKE_AR = aarch64-none-linux-gnu-ar cqs
QMAKE_OBJCOPY = aarch64-none-linux-gnu-objcopy
QMAKE_NM = aarch64-none-linux-gnu-nm -P
QMAKE_STRIP = aarch64-none-linux-gnu-strip
load(qt_config)
以上内容取决于交叉编译软件( /opt/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin)文件夹下程序名
- 创建编译输出文件夹,并增加权限
mkdir arm-qt
chmod +x arm-qt/
- 执行configure生成Makefile文件,命令如下:
./configure -opensource -prefix /home/huhu/third_part/qt-everywhere-src-5.12.12/arm-qt -xplatform linux-none-aarch64-gnu-g++ -release -no-cups -qt-zlib -qt-libjpeg -qt-libpng -no-openssl -no-pch -confirm-license -no-opengl
-prefix :编译完成文件输出目录
-xplatform:编译平台(/home/huhu/third_part/qt-everywhere-src-5.12.12/qtbase/mkspecs目录下新修改的qmake.conf所在的文件夹名称)
看到下图内容表示Makefile文件生成成功
- 执行编译:
- make
- make install
3.qt安装与qtcreator交叉编译配置:
- 下载路径:Index of /archive/qt/5.14/5.14.1
- 修改权限
sudo chmod 777 qt-opensource-linux-x64-5.14.1.run
- 执行安装
./qt-opensource-linux-x64-5.14.1.run
安装过程参考:嵌入式Linux下的Qt Creator环境搭建_安迪西的博客-CSDN博客_qt creator linux
我构建成功的文件名为button_test,在路径/home/huhu/third_part/qt_project/build-button_test-arm_linux-Debug下
4. 测试
启动arm主板,使用ifconfig获得主板ip地址,使用scp 将构建好的项目发送到arm主板上
scp 要传输的文件地址 用户名@ip地址:目标地址
scp ./button_test huhuarm@192.168.2.10:/home/huhuarm/Desktop/
传输成功后在arm上双击button_test文件运行,完成
问题1:
解决办法:安装build 的组件
sudo apt-get install build-essential
问题2:
因为我没有编译opengl模块,所以编译命令增加-no-opengl 参数
问题6:
文章来源:https://www.toymoban.com/news/detail-423364.html
原因是ubuntu20.04默认安装了python3,所以需要给python创建一个软连接到python,这样命令行使用python才能成功调用到python3文章来源地址https://www.toymoban.com/news/detail-423364.html
sudo ln -s /usr/bin/python3 /usr/bin/python
到了这里,关于ubuntu20.04搭建arm交叉编译环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!