【问题标题】:How to include externally built application into Yocto Project/OpenEmbedded Linux Kernel Image如何将外部构建的应用程序包含到 Yocto 项目/OpenEmbedded Linux 内核映像中
【发布时间】:2021-08-24 20:53:18
【问题描述】:

我有一个 C/C++ 应用程序,它最初是在几年前为 LynxOs 构建的。该应用程序所针对的硬件现已报废,我的任务是将该应用程序移植到 Abaco 使用嵌入式 linux 内核的 PPC11A powerpc 板。

我有一个来自 Abaco 的板级支持包,它基于 Yocto 项目的旧版本 (2.3.3) 构建,并且我已经能够使用 BSP 构建内核映像。我还能够从我的构建目录创建一个跨工具链安装程序,并且我已经能够使用跨工具链编译/链接应用程序。

此时,我有一个内核映像构建的构建目录,并且我有一个完全独立的应用程序构建区域。现在,我想弄清楚我需要做什么才能将应用程序的可执行文件、库、配置文件等集成到内核映像中。

请注意,当谈到 Yocto 项目和 OE 时,我是一个新手,到目前为止,我所做的一切都是基于我在 Yocto 文档、在线论坛甚至我自己的一本书中所读到的内容。购买。我找到了很多关于如何设置和使用 Eclipse 进行应用程序开发的信息,但在我工作的环境中这是不可能的。

对于我所阅读的内容,我假设我需要(或应该)为我的应用程序创建一个新层,然后我需要创建某种配方来将应用程序安装到内核的文件系统中。我确实在我读过的书中找到了一个示例,该示例使用 bin_package 来获取、解包和安装外部构建的包,这基本上是我需要做的,除了我的应用程序当前没有构建为软件包.

补充说明 我正在使用的应用程序是一个简单的 makefile 应用程序(即没有自动工具),并且由于各种原因,它将在嵌入式 linux 内核映像构建之外构建。我只需要弄清楚如何编写一个配方来将应用程序的可执行文件、库、配置和数据文件(所有本地文件)安装到内核映像的根文件系统中。

任何建议、具体示例或我可能尚未看到的其他来源的链接将不胜感激。

谢谢。

【问题讨论】:

    标签: linux-kernel yocto openembedded


    【解决方案1】:

    您是对的,最佳做法是始终为您的项目创建新层,其中包含特定 C++ 应用程序的配方以及其他项目需求。

    你可以创建一个简单的层:

    bitbake-layers create-layer meta-custom-layer
    

    然后将其添加到您的 bblayers.conf 文件中:

    bitbake-layers add-layer meta-custom-layer
    

    现在您需要为您的应用程序创建一个配方。 您的应用程序是用 C++ 编写的,因此您必须提及它是使用简单的 Makefile 还是 cmake 构建。

    了解构建类型将帮助您创建配方,因为 Yocto 有一个现成的类,可用于配置和构建众所周知的构建类型。

    可以在here 找到一个很好的 Cmake 配方示例。 可以在 here 找到 Makefile (autotools) 配方的一个很好的例子。

    如果您不想使用自动 Yocto 类,您可以创建自己的构建过程。可以在here 找到一个完美的回复,其中有很多很好的例子。

    另外一件事,你需要指定应用程序的来源,它可以来自 git 存储库或本地文件。这两种情况都在前面的示例链接中。

    正确构建最终配方后,您可以专注于 do_install 功能,您可以指定您的应用程序将在何处集成到 rootfs。

    最后,您可以为您的项目创建一个自定义图像来添加您的食谱。 可以在 here 找到一个非常详细的示例以及 Toradex 创建配方、层、使用内核等的其他示例。

    我希望这将有助于您更多地了解图层、食谱、..etc

    【讨论】:

    • 非常感谢。为了解决您的一些建议,我的应用程序是一个 makefile 应用程序,文件都是本地的。
    • 如果您的项目不是机密的,并且您希望我帮助您创建和测试配方,您可以与我共享软件,我会为您工作。
    • 您非常喜欢这个提议,但是虽然它不是机密的,但该软件是专有的。另外,我觉得我真正了解这个过程的唯一方法是根据您的指导自己完成工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2021-10-20
    • 2023-03-22
    • 2019-04-03
    • 2019-12-07
    • 2020-12-02
    • 1970-01-01
    相关资源
    最近更新 更多