【问题标题】:Bitbake vs. cmake for x86 and arm project用于 x86 和 arm 项目的 Bitbake 与 cmake
【发布时间】:2013-10-18 17:05:50
【问题描述】:

我有一个分层的 cmake 项目,其中包含库和应用程序的层次结构。这些库和应用程序中的每一个都有一个 CMakeLists.txt 和一个包含子 cmake 文件的顶级 CMakeLists.txt。

现在我们完全在 x86 Linux 平台上进行开发和测试,但在某些时候我们会希望开始将代码拉入 Yocto 构建和目标 arm。我们希望保持能够为 x86 和 arm 构建。

我看过一些关于为 x86 构建的 Yocto 指南,但这些似乎构建了整个世界(工具链、Linux 内核、所有库等)并通过 qemu 运行映像。对于我们的桌面使用来说,当我们的机器有编译器并且我们可以直接运行应用程序时,这有点矫枉过正,但是让 bitbake 构建一些我们依赖并且需要安装到'虚拟根'。

我如何将使用 bitbake 用于本机 x86 项目(代替 cmake 或作为 cmake 的补充),并且以后能够利用 Yocto 的配方文件?

【问题讨论】:

    标签: cmake bitbake


    【解决方案1】:

    我对 Yocto 没有太多经验,但我正在使用另一个具有类似概念的嵌入式 Linux 发行版:Buildroot。 Buildroot 为当前选择的工具链创建工具链文件(output/host/usr/share/buildroot/toolchainfile.cmake)。

    您为您的项目创建了两个输出文件夹:

    build-x86
    build-arm
    

    我是你刚刚执行的第一个文件夹:

    cmake ../path-to-your-source
    

    第二个:

    cmake ../path-to-your-source -DCMAKE_TOOLCHAIN_FILE=../path-to-buildroot/output/host/usr/share/buildroot/toolchainfile.cmake
    

    如果 Yocto 提供了一个工具链文件,你可以直接使用它。如果没有,您可以自己创建它。看到这个wiki

    更新:

    section 解释了如何将软件添加到 Buildroot(包)。 Here 描述了源文件夹覆盖机制

    【讨论】:

    • 我不确定这是否真的解决了我遇到的问题。我不需要使用 x86 环境构建的工具链或内核等,但我确实需要某种依赖系统来确保在 Y 之前构建 X。如果我有相同的系统可以同时做到这一点和嵌入式工具链,内核等,这将是理想的。
    • 仅供参考:你看过ScratchBox2吗?
    • 在我的方法中,您应该只构建整个 Buildroot 一次,以生成 arm 工具链和库依赖项。之后你可以用同样的方式编译你的软件,你可以为 x86 编译。但在“虚拟根”上安装依赖项无济于事。
    • 但是如果我正在为 x86 构建并且不需要 arm 工具链怎么办?目标是使用类似的系统来构建 x86 和 arm 二进制文件,但在构建 x86 时能够跳过工具链部分,因为我们可以通过 yum 之类的包管理器安装这些东西。
    • 对于 x86,您可以在项目文件夹或其他位置创建 build-x86 文件夹(称为源外构建)。然后您只需转到此文件夹并执行cmake ../path-to-your-source,就像您通常对 CMake 所做的那样。当您之后调用 make 时,您的软件将使用您已经通过 yum 安装的 gcc 进行编译。在您的 build-arm 文件夹中,您使用工具链文件的路径调用 cmake,因此当您调用 make 时,您的软件将针对 arm 进行交叉编译。这样你就有一个包含源代码的文件夹和两个独立的构建文件夹。
    猜你喜欢
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2018-01-03
    • 2014-08-26
    • 2020-07-06
    相关资源
    最近更新 更多