Ubuntu交叉编译环境配置

news/2024/11/7 21:35:37/文章来源:https://www.cnblogs.com/ovizro/p/18534026

Ubuntu交叉编译环境配置

近期遇到了一些交叉编译相关的问题,这里以Ubuntu 24.04上的arm32的交叉编译为例,介绍下如何在Linux中配置交叉编译环境。

1. 准备交叉编译工具链

交叉编译工具链是指可以在宿主机上运行但编译目标平台不同的编译工具链。

交叉编译工具可以使用包管理器直接安装,如:

sudo apt install gcc-arm-linux-gnueabihf

通过包管理器安装是比较推荐的方法,可以省去一些配置的时间,如果涉及到glibc版本兼容问题等可以考虑自行编译其他版本的gcc进行安装。

从源码编译可以参考这里

2. 配置包管理器

在进行交叉编译时使用到其他库是不可避免的。而安装在系统上的库,在交叉编译时无法直接使用。对于这样的问题,通常的解决方案都是下载库源码,利用交叉编译器重新编译。但实际上,对于arm32等常见架构,我们完全可以从包管理器直接获取到所需的库。

2.1 添加架构

对于Debian系系统,我们可以使用dpkg来添加所需的架构:

sudo dpkg --add-architecture armhf

2.2 添加源

如果你只是在aarch64的机器上添加arm32的库,那么可以跳过这一步。

由于x86与arm使用不同镜像源地址,所以我们需要修改原有的源配置,并添加arm32的源。

首先是修改原有的源配置文件,对于Ubuntu 24.04 LTS版本,其源配置文件格式为DEB822,路径为/etc/apt/sources.list.d/ubuntu.sources。我们需要在为每个源指定架构,在末尾添加Architectures: amd64

个人使用的配置文件如下(清华源):

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: amd64# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
Enabled: no
Types: deb-src
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: amd64# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: amd64Enabled: no
Types: deb-src
URIs: http://security.ubuntu.com/ubuntu/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: amd64# 预发布软件源,不建议启用# Types: deb
# URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
# Suites: noble-proposed
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg# # Types: deb-src
# # URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
# # Suites: noble-proposed
# # Components: main restricted universe multiverse
# # Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

对于24.04以下的使用 One-Line-Style 格式的配置文件的版本,需要在deb后面添加[arch=amd64]即可,就像这样:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
# deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
# deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
# deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb [arch=amd64] http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse
# deb-src [arch=amd64] http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse
# # deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse

然后我们添加arm32的源,路径为/etc/apt/sources.list.d/armhf-cross-compile.sources。注意arm32使用的源为ubuntu-ports,同样要为每个源指定架构名称。

下面同样是个人的配置,可以参考:

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: armhf# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
Enabled: no
Types: deb-src
URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
Suites: noble noble-updates noble-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: armhf# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
Types: deb
URIs: http://ports.ubuntu.com/ubuntu-ports/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: armhfEnabled: no
Types: deb-src
URIs: http://ports.ubuntu.com/ubuntu-ports/
Suites: noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Architectures: armhf# 预发布软件源,不建议启用# Types: deb
# URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
# Suites: noble-proposed
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg# Types: deb-src
# URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
# Suites: noble-proposed
# Components: main restricted universe multiverse
# Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

使用 One-Line-Style 格式的配置文件的版本需要在复制arm镜像源配置后,在每行的deb后面加上 [arch=armhf]即可,格式参考上面的示例。

3. 安装所需的库

在完成以上的配置后,我们需要先更新包管理器索引:

sudo apt update

然后就可以使用包管理器来安装所需要的库了,在安装时需要在包名后面加上架构名称,如alsa库:

sudo apt install libasound2-dev:armhf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828478.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+SpringBoot心理测评心理测试系统功能实现六

三、部分系统功能试卷试题信息业务逻辑层Service、试卷试题题型信息业务逻辑层Service、角色信息业务逻辑层Service、用户信息业务逻辑层Service、前台用户信息业务逻辑层Service一、前言介绍: 1.1 项目摘要 心理测评和心理测试系统在当代社会中扮演着越来越重要的角色。随着心…

基于Java+SpringBoot心理测评心理测试系统功能实现五

技术点:SpringBoot+SpringDataJPA+Mysql+HTML+Freemaker+Bootstrap 三、部分系统功能 关于我们信息业务逻辑层Service、封面图信息业务逻辑层Service、留言信息业务逻辑层Service、公告信息业务逻辑层Service、心理测试业务逻辑层Service一、前言介绍: 1.1 项目摘要 心理测评…

鸿蒙开发案例:七巧板

【1】引言(完整代码在最后面) 本文介绍的拖动七巧板游戏是一个简单的益智游戏,用户可以通过拖动和旋转不同形状的七巧板块来完成拼图任务。整个游戏使用鸿蒙Next框架开发,利用其强大的UI构建能力和数据响应机制,实现了流畅的用户体验。 【2】环境准备 电脑系统:windows 1…

windows MacBook 下载视频网站视频

下载yt-dlp github地址:https://github.com/yt-dlp/yt-dlp 下载:https://github.com/yt-dlp/yt-dlp/releases下载ffmpeg 官网:https://ffmpeg.org/解压后,只有bin下的这2个文件放C盘目录下 将下面这3个程序,挪到:C:\Windows\System32下载视频 在任意路径:cmd命令:yt-dl…

聊聊接口测试用例设计规范

1、通过性验证: 先按照接口文档传入所有必填字段并且字段值在正确范围内,预期返回正确结果 2、参数验证(正向/逆向):必填参数:针对每个必填参数,都设计一条参数为空的测试用例,接口错误信息返回正确 非必填参数:设计一条用例所有非必填的参数都传入值,非必填参数(类…

2287: 【例28.3】 数列分段

include <bits/stdc++.h> using namespace std; int n, m, sum, num; int main( ) { cin >> n >> m; for (int i=1;i<=n;i++) { int e; cin >> e; if (num+e>m) { sum++; num=e; } else { num+=e; } } cout << sum+1; return 0; } 反思:这…

CRM系统主要是干什么的?

什么是CRM 系统?CRM系统到底是干什么的?不同的企业人员该如何利用CRM去解决他们的问题等等,问题太多了,我想着就就专门出一期内容,来为大家详细介绍。 干货满满,建议收藏!! 首先第一个问题,什么是CRM系统? CRM是Customer Relationship Management 的缩写,就是客户关…

11月7日 NOIP模拟(难题math、矩阵游戏matrix、括号序列seq、道路road) - 模拟赛记录

Preface T1 试图找规律失败,正经推反而几分钟就出来了。以后应该少想这些歪门邪道(除非实在闲的蛋疼或者没有一点头绪,且必须要打完所有能打的子任务比如暴力或特殊性质;而且必须在用常规方法思考过后,才能够用一些稍微不那么常规的方法) 至于 T2、T3、T4,因为知道 T1 浪…

ESP32学习笔记2(GPIO的数字输入输出功能)

1. 普通5mm直径LED参数测定实验 以上为普通5mm直径LED,手册建议持续工作电流为20mA以内。以下,采用学生电源(带控压限流功能)通过限流电阻170欧给各色LED供电,通过缓慢加压测流和观察LED亮度的方法,确定电流、压降与亮度关系,实测该批次LED颜色与压降大致如下: 颜色 …

2024/11/7日工作总结

学习JS基础知识: 1.事件绑定:点击查看代码 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><img id="龙泡泡" src="../imgs/年…

实验三 c++

实验任务一 源代码 button.hpp1 #pragma once2 3 #include<iostream>4 #include<string>5 6 using std::string;7 using std::cout;8 9 class Button{ 10 public: 11 Button(const string &text); 12 string get_label()const; 13 void click(); 1…

学习openeuler操作系统的记录本

1.下载以及配置openeuler在官网里面下载openeuler操作系统,在官网的文档里面里面查看相对应的注意事项,(一定要会阅读官方文档),在官网查看下载的对应操作系统需要的最小cpu,以及磁盘大小等分配合适的虚拟硬盘,配置的过程要一步一步来,防止出现分配不合理,而导致的操作…