Linux - Yocto: 创建toolchain

本文介绍了如何使用Bitbake构建Yocto SDK,生成包含sysroot的工具链安装程序,该工具链独立且针对目标板的硬件架构。通过设置dynamicloader确保程序使用指定的库。在执行bitbake命令前需配置环境,如source build environment setup script和正确设置MACHINE变量。完成构建后,执行部署目录下的SDK安装脚本,选择安装路径并source环境设置脚本,即可开始使用SDK进行ARM程序编译。

在创建image时,生成Yocto SDK:(To build the toolchain installer and populate the SDK image)

$bitbake <image name> -c populate_sdk

这里的image就是Linux的rootfs的bb文件的名字,每个bb文件代表一个要构建的target。

比如:

$bitbake fsl-image-gui -c populate_sdk

那在Yocto项目里,你会找到fsl-image-gui.bb文件。

该命令的结果是生成一个工具链安装程序,里面包含了一个sysroot文件系统,它和你的目标板上的根文件系统是对应的。

这个工具链是完全独立的,对目标系统的无依赖性。它里面的二进制文件链接的是它自己的libc副本。

要实现这种独立性,使用指定的库,就要设置一个自己的dynamic loader,所以在toolchain的sh文件安装时将dynamic loader这个文件(比如ld-linux.so)的指定位置或叫做指针,进行配置,使这里面所有的程序都使用这个动态库加载器。

这也是在sdk外面做了一层包装,需要进行一次安装的原因。

还要注意一点,这个生成的交叉工具链只有一套,而不管是哪种架构。这是因为gcc工具链有编译选项来处理硬件信息。这些选项信息,包含在环境变量脚本里。这样就减少了工具所占用的空间。但对不同的目标板或硬件架构,还是需要有各自的sysroot,因为这部分是特定于目标板本身的,比如其中那些二进制文件。

在执行bitbake命令前,要先source一下build environment setup script, 比如oe-init-build-env。还要保证conf/local.conf里面的变量设置正确。

特别的,你使用的MACHINE变量要和你要编译的硬件架构是匹配的,或者你要编一个不同硬件架构的工具链,那就要设置正确的SDKMACHINE变量。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值