【发布时间】:2018-02-05 12:07:13
【问题描述】:
从 rocko 升级开始,我遇到了一个与 Yocto 2.3 中引入的特定于配方的 Sysroot 相关的问题
我们的项目使用 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 之外构建时,我们使用在构建目录中生成和填充的跨工具链:
$ bitbake meta-ide-toolchain
然后source环境:
$ source build/tmp/environment-setup-cortexa5hf-neon-poky-linux-gnueabi
在 rocko OECORE_NATIVE_SYSROOT 设置为 [...]/build/tmp/work/cortexa5hf-neon-poky-linux-gnueabi/meta-ide-support/1.0-r3/recipe-sysroot-native - 这没有没有 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 外部构建?
【问题讨论】:
-
是否有任何理由直接从 OE 的构建目录使用 SDK(工具链)?不应该这样使用... SDK 应该安装(通过
deploy/sdk/目录中的shell 脚本)并从安装位置使用。我们在我们的软件和 SDK 中使用 cmake 没有任何问题(如果你愿意,我可以简要描述配置)。 -
我们的想法是我们有构建项目的构建目录+完整映像,所以一切都已经存在,已经设置,所有工具+库等。
-
如果添加了新的依赖项,您的环境会在对项目进行位烘焙期间更新,因此当您要在外部构建时,所有内容都会“自动”更新。生成安装程序,然后在其他一些位置安装它涉及额外的手动步骤。此外,如果添加了依赖项,您必须再次手动生成并安装它。所以在我们开始项目的时候看起来并没有那么简单,使用从build目录派生的工具链更“自然”...
-
我记得构建目录工具链 (build/tmp/environment-setup-cortexa5hf-neon-poky-linux-gnueabi) 如果要使用 Eclipse 构建 Yocto 也需要使用项目。但也许,我遗漏了一些东西......(?)描述你的配置肯定会有所帮助!
-
是的,我明白并理解您的原因。我们正在每个开发人员的计算机上安装 SDK,正如您所写,我们需要在每次更改时更新它(即添加/升级库)。幸运的是,它不那么频繁。另一方面,我们的开发人员在他们的计算机上没有 OE。我们也在使用 Eclipse。无论如何,您是否尝试过可扩展 SDK?它可能适合您的需求,并且是鼓励开发的方式。