首页 > 系统相关 >Ubuntu交叉编译环境配置

Ubuntu交叉编译环境配置

时间:2024-11-07 21:19:00浏览次数:1  
标签:noble 交叉 restricted Ubuntu 编译 ubuntu deb main multiverse

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: amd64

Enabled: 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: armhf

Enabled: 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

标签:noble,交叉,restricted,Ubuntu,编译,ubuntu,deb,main,multiverse
From: https://www.cnblogs.com/ovizro/p/18534026

相关文章

  • Ubuntu Focal 20.04 (LTS) 安装 Docker
    官方安装文档:https://docs.docker.com/engine/install/ubuntu/系统要求:ubuntu必须是以下几个系统之一,64位。UbuntuNoble24.04(LTS)UbuntuJammy22.04(LTS)UbuntuFocal20.04(LTS)查看系统内核$uname-a安装步骤:1.更新ubuntu$sudoapt-getupdate2.添加Docker库......
  • GDB交叉编译
    GDB交叉编译1.环境编译环境:Ubuntu20.04目标平台:RK35662.下载gdb源码,我选择使用10.1版本https://ftp.gnu.org/gnu/gdb/?spm=a2c6h.12873639.article-detail.7.96081599YGoRcW3.解压$tar-xvfgdb-10.1.tar.gz4.configure配置--prefix指定编译输出路径CC指定......
  • 25源码编译安装软件
    每天五分钟学Linux|第二十五课:源码编译安装软件大家好!欢迎再次来到我们的“每天五分钟学Linux”系列教程。在前面的课程中,我们学习了如何使用软件包管理工具来查找、安装、更新和卸载软件包。今天,我们将探讨另一种安装软件的方式——通过源码编译来安装软件。这种方法允......
  • 编译openresty提示缺少gzip
    报错./configure:error:theHTTPgzipmodulerequiresthezliblibrary.Youcaneitherdisablethemodulebyusing--without-http_gzip_moduleoption,orinstallthezliblibraryintothesystem,orbuildthezliblibrarystaticallyfromthesourcewit......
  • ubuntu 系统安装 node 及 nvm node 版本管理工具
    ubuntu系统安装node及nvmnode版本管理工具 转载至https://www.cnblogs.com/flying--pig/p/17492342.html1.gitclone远程镜像1gitclonehttps://gitee.com/mirrors/nvm2.安装nvm 1bashinstall.sh3.刷......
  • 从 vue 源码看问题 — vue 编译器如何生成渲染函数?
    前言前两篇主要了解了vue编译器的解析和优化:将组件的html模版解析成AST对象基于AST语法树进行静态标记,首先标记每个节点是否为静态节点,然后进一步标记出静态根节点,便于在后续更新中跳过静态根节点的更新,从而提高性能下面就了解一下vue编译器是如何从AST......
  • Android反编译:使用dex2jar查看dex文件
    APK解压之后,其中一个文件是dex。怎么查看呢?使用dex2jar。 下载解压GitHub-pxb1988/dex2jar:Toolstoworkwithandroid.dexandjava.classfiles https://github.com/pxb1988/dex2jar/releases 下载后解压,目录为dex-tools-2.1 操作把从apk中解压的dex复制到d......
  • Ubuntu Linux中安装MySQL教程
    在UbuntuLinux中安装MySQL步骤步骤一:更新软件包列表首先,更新你的软件包列表:sudoaptupdate步骤二:安装MySQL服务器使用以下命令安装MySQL服务器:sudoaptinstallmysql-server步骤三:启动MySQL服务安装完成后,启动MySQL服务:sudosystemctlstartmysql......
  • ubuntu添加环境变量
    windows系统有用户环境变量和系统环境变量,ubuntu也是这样的。etc/profile文件是系统环境变量,适用于全局和所有用户~/.bashrc文件是用户环境变量,只适用于当前用户改完之后source一下文件就会生效了source/etc/profilesource~/.bashrc一般用~/.bashrc就可以了。[参考]......
  • Ubuntu24.04.1系统安装
    问题描述:之前的Ubuntu系统网络配置有问题,故重装系统。关键词:Ubuntu24.04.1,Etcher.1.下载ubuntu-24.04.1镜像文件(可选其他版本)清华源:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/24.04.1/2.Etcher软件下载Etcher软件下载:https://etcher.balena.io/#download-etch......