(YOCTO开发)如何配置外部工具链

一、配置外部工具链的意义

在某些场景下,yocto有需要配置下外部工具链的需求,但是很少。我们通常编译还是使用OE或者linaro提供的编译链即可。例如以下情景可以考虑外部工具链:

  • 1)减少编译时间,编译链的编译和生成可以说是最耗时的,使用外部(预制)的工具链,对于单个模块可以减少70%左右的编译时间,对于image也能减少50%的编译时间。但是对于减少编译时间的话,更好的方式是使用cache机制,这个后面有机会进行介绍。
  • 2)此外就是某些模块使用默认的工具链,它不符合格式要求。例如我们一个uboot或者是别的引导image需要一个64位的,但是我们这个kernel是32位的,虽然这种情况很少,但是,当我们想要编出指定指定架构的模块时,可以使用一个对应的外部工具链
  • 3)或者说某些模块默认的工具链编译有错,例如一个QT模块,它有对应的工具链要求。也就是编译要求器,那我们就找个外部的即可。

其实针对单个模块编译时,外部工具链能做的事,我们都可以用SDK更方便的代替,如果是单个模块的编译需求时,更推荐使用SDK!。

二、配置外部工具链的方法

需要注意的是,有些工具链:例如ia32工具链,需要确保您没有让它修改您的PATH,如果修改了,请将其删除。因为ia32 Sourcery G++工具链提供了无前缀的二进制文件(例如,gcc而不是i586-none-linux-gcc),这意味着 bitbake 将无法再直接运行主机的gcc。
具体的配置方法如下:这里暂不考虑具体的版本和工具链的版本(方法大概类似)

1、layer的配置

将meta-sourcery-master/meta-external-toolchain这两个layer添加到bblayer.conf中并使能(BBLAYERS),并保证其优先级高于meta layer(或者OE layer),也就是外部工具链的layer优先级高于默认工具链的优先级。

2、TCMODE和EXTERNAL_TOOLCHAIN的配置

设置TCMODE,为外部source。配置EXTERNAL_TOOLCHAIN为外部工具链的路径

TCMODE ?= "external-sourcery"
EXTERNAL_TOOLCHAIN = "下载的工具链目录"

其中TCMODE会自动进行很多处理,被别的地方所调用。同时也会去检查EXTERNAL_TOOLCHAIN的配置是否准确。

3、配置初始化脚本

当配置好上述后,编译过程中如果有别的环境变量配置项,需要手动执行的话,可以使用个初始化脚本,类似oe-init。

EXTERNAL_TOOLCHAIN_SETUP_SCRIPT = "XXX/setup"

其中setup的脚本,可以是根据编译错误进行的fix操作。

export TARGET_PREFIX = aarch64-none-linux-gnu-

三、编译验证

启动编译后,如果配置的外部工具链生效,对应的Build Configuration的输出中就包含了相应的配置,也可以对编译出来的产物file查看。

四、错误fix

编译过程中,对于部分模块会出现编译错误,根据具体case进行修复即可。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
Yocto Project 提供了一种用于构建嵌入式 Linux 发行版的框架,其中包括交叉编译工具的构建。通过 Yocto Project,您可以根据特定的硬件平台和软件需求,定制和构建适合您的嵌入式系统。 要构建 Yocto Project 的交叉编译工具,您需要执行以下步骤: 1. 配置环境:确保您的开发环境中已安装所需的工具,如 Git、Python 等。 2. 获取源码:从 Yocto Project 官方网站下载或使用 Git 克隆 Yocto Project 的源代码。 3. 配置构建:进入源码目录,运行 `source oe-init-build-env` 命令初始化构建环境。然后,通过编辑 `conf/local.conf` 文件来配置构建选项,例如目标硬件平台、软件包选择等。 4. 执行构建:运行 `bitbake <image-name>` 命令来构建 Yocto Project 镜像。其中 `<image-name>` 是您想要构建的镜像名称,例如 core-image-minimal。 5. 等待编译完成:Yocto Project 的构建过程可能需要一些时间,具体取决于您的系统性能和所选择的软件包数量。 6. 使用工具:一旦构建过程完成,您将在 `tmp/sysroots/<target-arch>/` 目录下找到生成的交叉编译工具。可以将此路径添加到您的环境变量中,以便在开发过程中使用交叉编译工具。 请注意,以上步骤仅概述了构建 Yocto Project 交叉编译工具的基本过程。实际操作可能会因您的需求和特定的硬件平台而有所不同。建议参考 Yocto Project 官方文档以获取更详细的指导和信息。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值