Ubuntu20.4配置arm交叉编译环境
创始人
2025-05-31 12:39:52
0

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

  • 在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
  • 安装xcb

在这里插入图片描述

下载拷贝到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 
#include 
#include 
#include  //加上这行
#endif
#ifndef ASSEMBLER
#include 
#include 
#endif

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

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

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

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...