Crosstool-NG构建arm交叉编译工具链

前言全局说明

嵌入式移植,交叉编译工具链是必不可少的

Crosstool-NG是一个用于构建交叉编译工具链的工具,它简化了从源代码构建gcc、glibc、binutils等工具的过程.


一、说明

1.1 环境:

Ubuntu 22.04 LTS (Linux VirtualBox 6.8.0-87-generic #88~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Oct 14 14:03:14 UTC 2 x86_64 x86_64 x86_64 GNU/Linux)

1.2 配置:

某些 GCC 优化选项(如 -flto)会消耗大量内存
编译最好是8G或16G内存起步,否则在编译过程中需要大内存时会失败。
如果使用虚拟机或内存不够,可以增加 swap 来设置更多虚拟内存来解决。


二、安装依赖

sudo apt-get update
sudo apt-get install -y git gperf bison flex texinfo help2man gawk libtool-bin libncurses5-dev unzip 

三、获取Crosstool-NG

3.1

git clone https://github.com/crosstool-ng/crosstool-ng

3.2 选择特定版本

默认 master

cd crosstool-ng
git checkout master 

四、编译安装Crosstool-NG

4.1

./bootstrap

4.2

./configure --prefix=/opt/crosstool-ng

--prefix 可以用 export CT_PREFIX_DIR= 来代替,效果一样

4.3

make

4.4

sudo make install

4.5 将Crosstool-NG添加到PATH:

export PATH="/opt/crosstool-ng/bin:$PATH"

五、设置

5.1

mkdir ~/arm-toolchain

下文有修改目录路径的方法

5.12

cd ~/arm-toolchain

arm-toolchain 会占用大量空间,选择一个空间大的路径,在 .confi 里修改,或用 ct-ng menuconfig 修改

5.3 选择ARM架构预设

ct-ng arm-unknown-linux-gnueabi 

5.4 增加 swap 来设置更多虚拟内存

sudo fallocate -l 8G /swapfile  # 创建 8GB Swap 文件
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

/swapfile 是默认路径,你可以用 df -h 看看哪个磁盘空间大,选择放到其他大空间下。

通过 free -hswapon --show 查看swap总量

开机自动挂载:
在/etc/fstab 增加/swapfile none swap sw 0 0内容


六、构建工具链

6.1 验证设置

构建前可以运行以下命令检查路径设置是否正确:

ct-ng show-tuple          # 显示当前配置
ct-ng build.1             # 只执行第一步,检查下载和解压

6.2 构建

ct-ng build

构建过程可能需要较长时间(30分钟到几小时,取决于系统配置)。

构建完成后,工具链将安装在~/x-tools/arm-unknown-linux-gnueabi目录下(或你指定的目录)。


七、扩展

7.1 离线构建

提前下载所有源码包:

ct-ng source

可以使用 export CT_TARBALLS_DIR=~/ng-home/src/ 指定源码下载目录

image

7.2 自定义配置(可选)

ct-ng menuconfig

常见配置选项:
Paths and misc options:设置安装路径(默认为~/x-tools)
Target options:调整目标架构(如ARMv7、ARMv8等)
Toolchain options:选择C库(glibc、musl等)
Operating System:选择Linux内核版本
Binary utilities:binutils版本
C compiler:gcc版本和配置

7.3 减少并行编译任务:

减少并行任务数(降低 -j 参数)(默认可能是 CPU 核数)

export CT_PARALLEL_JOBS=2  

或者在 ct-ng menuconfig 里设置:

Paths and misc options → Number of parallel jobs

7.4 自定义 arm-toolchain 路径

Paths and misc options  --->

image

7.5 自定义 src 路径

Paths and misc options  --->

image



免责声明:本号所涉及内容仅供安全研究与教学使用,如出现其他风险,后果自负。




参考、来源:
https://www.wenxiaobai.com/6cd2e86a-b238-4f5e-984d-efb9a779150b
https://www.wenxiaobai.com/3bd75f4a-69b2-4d0f-a495-8821bacda2fd (小白AI:linux 设置swap)
https://www.wenxiaobai.com/58c89cd5-77b2-413a-9be3-b9ff85ee7326 (小白AI:内存不足被Kill, 回答右下角切换查看多个回答)
https://www.wenxiaobai.com/2fb18fa5-3bd0-497e-b09c-999941aedd72 (小白AI:export CT_TARBALLS_DIR=)
https://www.wenxiaobai.com/108753c6-013a-4194-8a01-ae8b6e49e893(小白AI:export CT_PREFIX_DIR=)


posted @ 2025-11-14 16:59  悟透  阅读(24)  评论(0)    收藏  举报