Ubuntu20.4配置arm交叉编译环境

本文详细介绍了如何在Ubuntu20.04系统中设置aarch64交叉编译环境,包括安装必要的软件如qemu-user-static和binfmt-support,配置chroot环境,安装开发库,以及在arm环境中安装交叉编译工具。此外,还特别提到了编译Qt5.12.8的步骤,包括修改源码配置,安装依赖,解决编译过程中遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ubuntu20.4配置arm交叉编译环境

我是在虚拟机中配置的,如果你的嵌入式设备足够完成自己的编译,可以不考虑虚拟机的。

  • 新安装的Ubuntu20.04系统请先执行以下代码
sudo apt update
sudo apt upgrade
  • aarch64下载对应的aarch64的base镜像。

在这里插入图片描述

  • 之后执行如下命令,创建armsys文件夹,之后将刚下载的镜像拷贝到该文件夹下并且解压
cd /
mkdir /armsys
  • 安装一些必要的软件
 sudo apt install qemu qemu-user-static binfmt-support debootstrap
  • 注册aarch64的运行环境
sudo update-binfmts --enable qemu-aarch64
  • 为了能在x86 Ubuntu上chroot到/armsys并执行aarch64的程序,还需要将qemu-aarch64-static拷贝到/path/to/rootfs/usr/bin/;
sudo cp -av /usr/bin/qemu-aarch64-static /armsys/usr/bin/
  • 配置arrch64 Ubuntu的网关;
cp /etc/resolv.conf /armsys/etc/resolv.conf
  • chroot到aarch64 Ubuntu的armsys,并安装开发库。
sudo chroot /armsys
apt update 
apt upgrade
apt install -y libopencv-dev

执行后面的update可能会报错
在这里插入图片描述

这个时候我们需要去检查/dev/null

rm -f /dev/null
mknod -m 666 /dev/null c 1 3

以上命令也可能无法创建null ,这个时候我们只要去到对应的文件夹修改null权限为666就可以正常运行上述代码了。

  • 准备x86上aarch64的编译工具。
exit
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
  • 在arm环境中安装交叉编译工具,并且将/usr/bin添加到环境变量
apt-get install gcc-aarch64-linux-gnu
pt-get install g++-aarch64-linux-gnu
apt install vim
vim /etc/profile

# 将下面的一句话放到文件末尾
# export PATH="/usr/bin:$PATH"
source /etc/profile
# 查看gcc版本
aarch64-linux-gnu-gcc -v

编译Qt5.12.8

在这里插入图片描述

  • 将下载完成的QT源码拷贝到对应的文件夹内,解压源码
tar -xvf qt-everywhere-src-5.12.8.tar.xz
  • 解压完毕之后进入源码目录,修改文件
vim qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf

# 增加一下内容
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a -lts

  • 安装ninja
apt-get install ninja-build

在这里插入图片描述

下载拷贝到linux的arm环境内

之后运行如下脚本:

./configure
make -j4
make install
# 必须先执行proto之后再安装libxcb。如果你在libxcb ./configure的时候报错了执行下面的脚本
sudo apt install libxau-dev libpthread-stubs0-dev

当然,如果你的make命令不能执行,你需要安装一下。

  • 上述执行完成之后开始编译QT
./configure -prefix /usr/bin/arm512qt5.12.8 -xplatform linux-aarch64-gnu-g++

报错,故而安装了一些额外的包

apt-get install flex
apt-get install bison
apt-get install gperf
apt-get install libxcb*
apt-get install build-essential
apt-get install libgl1-mesa-dev
apt-get install libglu1-mesa-dev
apt-get install libegl1-mesa-dev
apt-get install freeglut3-dev

如果你在编译的时候报错(numeric_limits),进入源码/qtbase/src/corelib/global 修改qglobal.h

#ifdef __cplusplus
#include <type_traits>
#include <cstddef>
#include <utility>
#include <limits> //加上这行
#endif
#ifndef ASSEMBLER
#include <assert.h>
#include <stddef.h>
#endif

如果你遇到问题 ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.

./configure -prefix /usr/bin/arm512qt5.12.8

中途会报两个错误,源自于QT源码错误,只要将对应的头文件和cpp文件缺失的头包含进去就行了。(报错很明显,不需要再贴图了哈。)

回答: Ubuntu arm是指在arm架构上运行的Ubuntu操作系统。arm架构是一种常用于嵌入式系统和移动设备的处理器架构。在arm架构的Ubuntu系统上,可以使用arm-linux-gcc编译器进行开发和编译。要在Ubuntu arm上安装arm-linux-gcc,可以下载arm-linux-gcc的安装包,将其放置在Ubuntu系统的指定目录下,例如/home/gec目录。\[1\] Ubuntu是一个以桌面应用为主的Linux操作系统,它基于Debian发行版和Gnome桌面环境Ubuntu的名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“我的存在是因为大家的存在"。Ubuntu拥有庞大的社区力量,用户可以方便地从社区获得帮助。\[2\]在Ubuntu 18.04 LTS之后的版本中,Ubuntu又重新开始使用GNOME3桌面环境。\[2\]对于arm架构的Ubuntu系统,可能会出现与容器运行时不兼容或更新报错的问题。在测试中发现,Ubuntu 21.10版本的update命令不能正常使用,而Ubuntu 22.04版本的x86架构正常,但arm架构需要添加--privileged参数。其他版本的Ubuntu在测试中表现正常。\[3\] #### 引用[.reference_title] - *1* [ubuntu20.4安装arm编译器教程,以及安装后arm-linux-gcc无法编译成功,报错是什么原因和解决方法](https://blog.csdn.net/m0_57037805/article/details/126175547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [LinuxUbuntu 下安装配置ARM交叉编译器(工具链)的简单整理](https://blog.csdn.net/u014361280/article/details/127902486)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ubuntu arm架构各版本源整理](https://blog.csdn.net/weixin_39855998/article/details/128385200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

turbolove

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值