作者| koda.xu
本期技术专题主要讲解如何使用buildroot编译指定gcc和glibc版本的交叉工具链,适用于SSD平台。
以使用下面的环境编译交叉工具链为例,完整编译步骤如下。
目标环境
SSD222D:
Arm A7 支持硬浮点运算和NEON
linux-headers:4.9.84
gcc:12.3.0
glibc:2.32
binutils:2.40
gdb/gdb-server:12.1
编译步骤
1. 下载buildroot
git clone
https://github.com/buildroot/buildroot.git
2. 生成默认的配置文件.config
make defconfig
3. menuconfig菜单中修改配置并保存 make menuconfig
Target options设置:
Build options设置:
Toolchain设置:
4. 资源配置的指定或修改
Linux header配置:
注意,这里指定的linux-header 配置名称不能为 BR2_KERNEL_HEADERS_4_9 ,因为 BR2_KERNEL_HEADERS_4_9 在 Config.in.legacy 中已有定义,这个表示不再支持这个linux-header版本。原则上保证定义的配置名称不重名又能说明当前使用的版本即可。
gcc配置:
glibc配置:
在 package/glibc/glibc.mk 中可以看到 glibc 的下载地址是:
GLIBC_SITE = $(call github,bminor,glibc,$(GLIBC_VERSION))
github 是 Buildroot 中定义的一个辅助函数,用于生成 GitHub 仓库的下载地址。它的定义如下:
所以 默认的设置,glibc 的实际下载地址形式如下:
测试下载发现,提交笔数不是必须指定的,commit信息也不用指定完整的commit id,满足唯一标志就好,一般指定为7位。
我们使用下面这笔commit作为当前编译toolchain的glibc版本,指定 GLIBC_VERSION 如下:
GLIBC_VERSION = 2.32-g4c56bcb
binutils配置:
gdb配置:
若有手动修改配置,重新只需make menuconfig 命令,设置好后将.config文件备份。
5. 编译
make clean -j16;make sdk -j16
编译过程中若出现 “No hash found for xxx” 这样的错误提示,可以在dl目录下对应软件包名称的目录,使用 “sha256sum” 或 “sha512sum” 指令先生成SHA码,再将生成的SHA码信息写入package目录对应软件包名称的目录下的hash文件中,如下:
6. 编译完成后在output/host目录下会生成toolchain,并在output/images目录下生成toolchain的tar.gz文件。查看toolchain版本信息
》》原文地址
End.
推荐阅读
微信刷掌支付发布,搭载SSC9351Q
好学多听力熊,搭载SSD222D
SigmaStar智能门锁方案介绍
SSD222Q在工业HMI中的新应用
SigmaStar智能网关方案介绍
SigmaStar智能家居全家桶
扫码进入论坛
原厂答疑|产品选型|官方资源
扫码咨询客服
SDK下载|芯片、开发板购买