在Yocto中构建系统派生的工具链

时间:2018-02-05 12:07:13

标签: yocto bitbake toolchain

我从 rocko 升级开始出现问题,并且与Yocto 2.3中引入的Recipe特定Sysroots相关

我们的项目使用cmake。所以我们的食谱有:

DEPENDS = "cmake-native [...]"

所以cmake最终在build / tmp / work / cortexa5hf-neon-poky-linux-gnueabi / component / 1.0-r0 / recipe-sysroot-native / usr / bin / cmake 因此,当在yocto内部构建时,一切都很好。

当我们构建外部yocto时,我们使用在Build Directory中生成并填充的交叉工具链:

$ bitbake meta-ide-toolchain

然后获取环境:

$ source build/tmp/environment-setup-cortexa5hf-neon-poky-linux-gnueabi

on rocko OECORE_NATIVE_SYSROOT设置为[...] / build / tmp / work / cortexa5hf-neon-poky-linux-gnueabi / meta-ide-support / 1.0-r3 / recipe-sysroot-native - which doesn'有cmake:

  $ which cmake
  $

所以没有发现cmake ......

在Krogoth上它是build / tmp / sysroots / x86_64-linux - cmake就在那里:

$ which cmake
  <full path>/build/tmp/sysroots/x86_64-linux/usr/bin/cmake

如何正确设置从构建目录派生的工具链,以便在Yocto外部构建?

1 个答案:

答案 0 :(得分:0)

我最终没有使用meta-ide-support,而是我已经添加了对我自己的食谱(我的组件)生成工具链的支持:这是我的最终目的,也是为了能够构建我在Yocto以外的组成部分。

因此,当我在构建组件时执行bitbake my-component时,也会生成在Yocto之外构建组件所需的工具链。

在我的食谱中,我添加了meta-ide-support的一些代码:

inherit toolchain-scripts

do_populate_ide_support () {
  toolchain_create_tree_env_script
}
addtask populate_ide_support before do_build after do_install

现在,当我构建我的食谱时,我还在build/tmp/目录中获得了一个环境设置脚本 - 与之前使用的meta-ide-toolchain相同的位置。

现在一切都设置正确:

OECORE_NATIVE_SYSROOT设置为[...]/build/tmp/work/cortexa5hf-neon-poky-linux-gnueabi/component/1.0/recipe-sysroot-native