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

目录
相关文章
|
6天前
|
Ubuntu 开发工具 C语言
Ubuntu环境下的Samba源码编译
以上就是在Ubuntu环境下编译Samba源码的步骤。希望这个指南能帮助你成功地从源码编译Samba。如果你在编译过程中遇到任何问题,你可以查阅Samba的官方文档,或者在网上搜索相关的教程和解决方案。
47 23
|
9天前
|
Ubuntu 安全 网络安全
在Ubuntu系统下使用vsftpd配置FTP服务器的步骤
以上就是在Ubuntu系统下使用vsftpd配置FTP服务器的步骤。这些步骤都是基础的,但足够让你建立一个简单的FTP服务器。如果你需要更高级的功能,例如SSL加密、虚拟用户等,你可能需要进一步研究vsftpd的配置选项。
54 13
|
17天前
|
Ubuntu 网络协议
在Ubuntu 18.04服务器上配置双网口以接入互联网
总结一下,配置双网口在Ubuntu 18.04服务器就像一场冒险游戏,你小心翼翼地从查看网络布局开始,铺设新线路,最后得到了通往互联网的双重通道。祝你在网络世界的冒险旅程中更上一层楼!
54 11
|
1月前
|
关系型数据库 应用服务中间件 PHP
在 Ubuntu 20.04 上搭建NMP环境
本文介绍了如何在Linux系统上安装和配置Nginx、MariaDB和PHP。首先更新系统包并安装Nginx,确保其正常运行并配置防火墙允许流量。接着安装MariaDB数据库,运行安全脚本增强安全性,并验证安装成功。最后,安装PHP及其常用扩展,通过创建一个简单的PHP文件测试其是否正常工作。整个过程详细说明了每一步骤的命令及操作,帮助用户顺利完成LAMP(Linux, Nginx, MariaDB, PHP)环境的搭建。
63 1
|
1月前
|
NoSQL Ubuntu 网络安全
在 Ubuntu 20.04 上安装和配置 Redis
在 Ubuntu 20.04 上安装和配置 Redis 的步骤如下:首先更新系统包,然后通过 `apt` 安装 Redis。安装后,启用并启动 Redis 服务,检查其运行状态。可选配置包括修改绑定 IP、端口等,并确保防火墙设置允许外部访问。最后,使用 `redis-cli` 测试 Redis 功能,如设置和获取键值对。
62 1
|
2月前
|
存储 网络协议 网络安全
【Azure 环境】部署ARM Linked Template时候 Blob SAS Token不能正常工作
Unable to retrieve url https://<stroage account name>.blob.core.chinacloudapi.cn/arm/azuredeploy.json?sp=r 'st' is not recognized as an internal or external command, operable program or batch file. 'se' is not recognized as an internal or external command, operable program or batch file. 'spr' is no
|
4月前
|
JSON Ubuntu 开发者
ubuntu 22安装lua环境&&编译lua cjson模块
通过上述步骤,可以在 Ubuntu 22.04 系统上成功安装 Lua 环境,并使用 LuaRocks 或手动编译的方式安装 lua-cjson 模块。本文详细介绍了每一步的命令和操作,确保每一步都能顺利完成,适合需要在 Ubuntu 系统上配置 Lua 开发环境的开发者参考和使用。
390 13
|
4月前
|
Ubuntu 芯片 开发者
Ubuntu 25 ARM 桌面系统抢先版发布:第一个Ubuntu ARM桌面系统
Ubuntu 25.04 将于2025年发布,首次支持ARM Desktop桌面版系统,为ARM架构设备如Mac M系列芯片、Raspberry Pi等带来全新的桌面体验。用户可通过虚拟机或双系统安装在Mac上运行Ubuntu ARM,抢先体验版已开放下载:[链接](https://www.baihezi.com/ubuntu/arm/desktop)。此版本不仅扩展了Ubuntu的硬件兼容性,还提供了丰富的功能和流畅的操作体验,适合开发者和技术爱好者尝试。
1567 9
|
6月前
|
网络协议 Ubuntu 网络安全
|
5月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
209 2
下一篇
oss创建bucket