找回密码
 立即注册
首页 业界区 安全 Ubuntu交叉编译环境配置

Ubuntu交叉编译环境配置

焦和玉 2025-6-9 13:30:54
Ubuntu交叉编译环境配置

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

交叉编译工具链是指可以在宿主机上运行但编译目标平台不同的编译工具链。
交叉编译工具可以使用包管理器直接安装,如:
  1. sudo apt install gcc-arm-linux-gnueabihf
复制代码
通过包管理器安装是比较推荐的方法,可以省去一些配置的时间,如果涉及到glibc版本兼容问题等可以考虑自行编译其他版本的gcc进行安装。
从源码编译可以参考这里
2. 配置包管理器

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

对于Debian系系统,我们可以使用dpkg来添加所需的架构:
  1. 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。
个人使用的配置文件如下(清华源):
  1. Types: deb
  2. URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
  3. Suites: noble noble-updates noble-backports
  4. Components: main restricted universe multiverse
  5. Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  6. Architectures: amd64
  7. # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
  8. Enabled: no
  9. Types: deb-src
  10. URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
  11. Suites: noble noble-updates noble-backports
  12. Components: main restricted universe multiverse
  13. Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  14. Architectures: amd64
  15. # 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
  16. Types: deb
  17. URIs: http://security.ubuntu.com/ubuntu/
  18. Suites: noble-security
  19. Components: main restricted universe multiverse
  20. Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  21. Architectures: amd64
  22. Enabled: no
  23. Types: deb-src
  24. URIs: http://security.ubuntu.com/ubuntu/
  25. Suites: noble-security
  26. Components: main restricted universe multiverse
  27. Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  28. Architectures: amd64
  29. # 预发布软件源,不建议启用
  30. # Types: deb
  31. # URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
  32. # Suites: noble-proposed
  33. # Components: main restricted universe multiverse
  34. # Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  35. # # Types: deb-src
  36. # # URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu
  37. # # Suites: noble-proposed
  38. # # Components: main restricted universe multiverse
  39. # # Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
复制代码
对于24.04以下的使用 One-Line-Style 格式的配置文件的版本,需要在deb后面添加[arch=amd64],就像这样:
  1. # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
  2. deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
  3. # deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse
  4. deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
  5. # deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse
  6. deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
  7. # deb-src [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse
  8. # 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
  9. deb [arch=amd64] http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse
  10. # deb-src [arch=amd64] http://security.ubuntu.com/ubuntu/ noble-security main restricted universe multiverse
  11. # 预发布软件源,不建议启用
  12. # deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-proposed main restricted universe multiverse
  13. # # 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,同样要为每个源指定架构名称。
下面同样是个人的配置,可以参考:
  1. Types: deb
  2. URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
  3. Suites: noble noble-updates noble-backports
  4. Components: main restricted universe multiverse
  5. Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  6. Architectures: armhf
  7. # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
  8. Enabled: no
  9. Types: deb-src
  10. URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
  11. Suites: noble noble-updates noble-backports
  12. Components: main restricted universe multiverse
  13. Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  14. Architectures: armhf
  15. # 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
  16. Types: deb
  17. URIs: http://ports.ubuntu.com/ubuntu-ports/
  18. Suites: noble-security
  19. Components: main restricted universe multiverse
  20. Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  21. Architectures: armhf
  22. Enabled: no
  23. Types: deb-src
  24. URIs: http://ports.ubuntu.com/ubuntu-ports/
  25. Suites: noble-security
  26. Components: main restricted universe multiverse
  27. Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  28. Architectures: armhf
  29. # 预发布软件源,不建议启用
  30. # Types: deb
  31. # URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
  32. # Suites: noble-proposed
  33. # Components: main restricted universe multiverse
  34. # Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
  35. # Types: deb-src
  36. # URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports
  37. # Suites: noble-proposed
  38. # Components: main restricted universe multiverse
  39. # Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
复制代码
使用 One-Line-Style 格式的配置文件的版本需要在复制arm镜像源配置后,在每行的deb后面加上 [arch=armhf]即可,格式参考上面的示例。
3. 安装所需的库

在完成以上的配置后,我们需要先更新包管理器索引:
  1. sudo apt update
复制代码
然后就可以使用包管理器来安装所需要的库了,在安装时需要在包名后面加上架构名称,如alsa库:
  1. sudo apt install libasound2-dev:armhf
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册