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

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

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

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


●  新安装的Ubuntu20.04系统请先执行以下代码

sudo apt update
sudo apt upgrade

●  aarch64下载对应的aarch64的base镜像。

a3378760d34444e999dbea27e3f7fadb.png

之后执行如下命令,创建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可能会报错

c466843536cb4473b716bebec64f4b51.png

这个时候我们需要去检查/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下载对应的源码包234dea7db22a4ecfa2691f7cc5f6424b.png

将下载完成的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

bc43a2795cef451fbb809976e44676ee.png

下载拷贝到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文件缺失的头包含进去就行了。(报错很明显,不需要再贴图了哈。)

目录
相关文章
|
12天前
|
人工智能 Ubuntu 前端开发
Dify部署全栈指南:AI从Ubuntu配置到HTTPS自动化的10倍秘籍
本文档介绍如何部署Dify后端服务及前端界面,涵盖系统环境要求、依赖安装、代码拉取、环境变量配置、服务启动、数据库管理及常见问题解决方案,适用于开发与生产环境部署。
208 1
|
9天前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
107 18
|
11天前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
113 17
|
11天前
|
存储 Ubuntu 自动驾驶
运行Udacity的MPC控制项目指南(project_10)在Ubuntu 18.04环境下
以上步骤应该能够帮助您成功设置并运行Udacity MPC控制项目,在此过程中您将学习如何应用模型预测控制理论去指导车辆沿着轨迹自主驾驶,在模拟环境下测试其效果。这个过程不但涵盖了理论知识也有实践操作,对于学习自动驾驶车辆控制系统非常有帮助。
65 15
|
12天前
|
Ubuntu 安全 关系型数据库
安装与配置MySQL 8 on Ubuntu,包括权限授予、数据库备份及远程连接指南
以上步骤提供了在Ubuntu上从头开始设置、配置、授权、备份及恢复一个基础但完整的MySQL环境所需知识点。
183 7
|
26天前
|
消息中间件 人工智能 运维
Ubuntu环境下的 RabbitMQ 安装与配置详细教程
本文聚焦在Ubuntu下RabbitMQ安装与配置教程,旨在帮助读者快速构建稳定可用的消息队列服务。
|
1月前
|
缓存 监控 Ubuntu
在Ubuntu 16.04上配置GitLab Runner以激活GitLab CI/CD流程
完成以上步骤后,每当代码被推送到远端仓库中相对应分支上时,GitLb CI / CD 流水线就会自动触发,并由之前注册好了 GitLb runner 的机器去完成定义好了 ` .gitlabcicd.yml ` 文件里面定义好各种任务(如编译测试部署等).
83 13
|
1月前
|
XML Ubuntu Java
|
1月前
|
Ubuntu Linux
任何Ubuntu用户都应安装的四大Linux应用程序
当然,这款程序不需要太多介绍。我们面对的是网上最庞大最完整的多媒体中心,由于丰富的插件,我们能够高度细化地定制其每一项功能。这是我们的Linux发行版不可或缺的必备软件。 我们可以通过运行以下命令来轻松安装Kodi:sudo apt install kodi。

热门文章

最新文章