我从 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外部构建?
答案 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