arm-none-eabi-gcc源码编译

1. 背景

工作的服务器环境比较老,ARM官网下载的编译好的工具链无法直接运行(详见编译GLIBC),故计划尝试源码编译安装。

2. 源码下载

ARM官网有源码下载的地址,我下载的是gcc-arm-none-eabi-10.3-2021.10-src.tar.bz2

3. 编译

工具链的编译依赖了一些其他的库,好在官网下载的源码包都包含了,不需要额外下载。gcc-arm-none-eabi-10.3-2021.10-src目录下有一份How-to-build-toolchain.pdf,其中介绍了编译的流程,即如下3个步骤。此处我不需要编译mingw的程序以及我工作的Linux环境中Python不满足依赖要求,故跳过这两项内容。

# 解压文件,大约16min
./install-source.sh --skip_steps=howto,md5_checksum,mingw32 > install-source.txt 2>&1
# 编译依赖库,大约2分钟
./build-prerequisites.sh --skip_steps=howto,md5_checksum,mingw > build-prerequisites.sh 2>&1
# 编译工具链,大约10小时
./build-toolchain.sh --skip_steps=gdb-with-python,manual,howto,md5_checksum,mingw,mingw-gdb-with-python,package_sources --build_type=native --with-multilib-list=rmprofile,aprofile > build-toochain.txt 2>&1
# 移动工具链到任意安装目录
rm -rf /home/xflm/apps/gcc-arm-none-eabi-10.3
mv install-native /home/xflm/apps/gcc-arm-none-eabi-10.3 -r
# 尝试运行工具链
/home/xflm/apps/gcc-arm-none-eabi-10.3/bin/arm-none-eabi-gcc -v

4. 插曲

4.1 g++版本太低

第一次编译了6个小时,提示编译失败,我的g++不支持c++11

4.2 python环境不满足

更换了更高版的工具链,重新执行./build-toolchain.sh,编译6小时后,提示编译报错,我的python版本不支持,故增加了--skip_steps=gdb-with-python的选项。

4.3 重新编译也很慢

查看./build-toolchain.sh发现它在编译每一部分前会删除编译目录,其实配置参数变化不大时,不删除也没关系的,我考虑修改这个文件,如下。在上步失败后,修改./build-toolchain.sh,重新执行编译,花了4小时,完成编译。

# 备份该文件
cp build-toolchain.sh build-toolchain.sh.bak
# 取消删除编译目录的动作
sed 's|rm -rf \$BUILD.*&& ||g' -i build-toolchain.sh

4.4 编译成功后重新编译

想测一下这个构建体系有没有追加编译的功能,我只删除了安装目录install-native,执行编译命令,花了4个小时,还是很漫长啊。

./build-toolchain.sh --skip_steps=gdb-with-python,manual,howto,md5_checksum,mingw,mingw-gdb-with-python,package_sources --build_type=native --with-multilib-list=rmprofile,aprofile > build-toochain.txt 2>&1

4.5 文件大小

好奇的查看了一下各个目录的文件大小。

$ du -bs install-native
656367401  # 安装目录大约656M
$ du -bs build-native
20239011796 # 编译目录大约20G
$ du -bs src
1568901066 # 源码大约1.56G

5. 参考

arm-none-eabi-gcc 源码编译 toolchain 构建过程

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值