为什么Yocto SDK无法构建Yocto SDK?

时间:2019-03-14 15:10:46

标签: sdk yocto extensible

这里有一系列相关问题,因为我怀疑我问的是错误的问题。相关问题可以帮助某人辨别我的基本误会。

我已经通过:

我正在寻找一个可以使用bitbake的单一构建环境,并为不同的目标体系结构构建产品。

毕竟,这似乎是Yocto / OE的圣杯。

功能最强大的x86_64环境似乎来自:

git clone git://git.yoctoproject.org/poky

它比SDK的功能更强大,但是如何为另一个平台交叉构建此环境?

是否有一个git clone环境一样功能的SDK?这意味着它可以正常工作,我可以为不同的目标交叉构建可启动映像吗?

问题:

  • 为什么SDK无法构建SDK? (例如http://downloads.yoctoproject.org/releases/yocto/yocto-2.6/buildtools/

    • 为什么SDK甚至不包含bitbake? (ext SDK可以,但是不喜欢将其添加到路径中。)
    • 为什么带有适当来源的env(并在路径中添加bitbake)的可扩展SDK似乎更喜欢由发行版安装的构建工具,而不是SDK中的那些工具? (当直接使用bitmake代替devtool时)
  • 为什么SDK显然绑定了针对特定机器或体系结构的构建,而显然却无法针对不同体系结构进行交叉构建?建立SDK的过程甚至希望最终指定最终的架构

我习惯使用的是build-sysroot,它的跨工具链在某种伪/ proot / chroot下运行,并且我的源文件已装入其中。

我意识到Yocto / bitbake可以在后台执行此操作,所有配方缓存看起来都很棒,git clone checkout看起来很强大,devtool工作流程看起来很棒,但是当我尝试标准化此环境的生成时,一切都掉了下来,或使其交叉编译。

(我希望从包含一些本地conf文件的目标目录中获取环境文件以专门化构建,然后使用bitbake进行构建)

我错过了什么? -感谢您阅读本文;-)

2 个答案:

答案 0 :(得分:1)

SDK是一个通用词,在yocto的上下文中,可能会被误解,因此您的问题是合法的。

Yocto是构建完全自定义图像的绝佳工具,并且可以根据在线获取的源代码在各个级别(引导加载程序,内核,应用程序)进行调整。 您可以使用yocto生成的SDK如文档中所述:

  

Standard SDK提供了跨开发工具链和库   根据特定图片的内容量身定制。

根据我对Yocto的少量经验,您可以使用元层来创建和自定义环境。设置环境后,您可以生成一个SDK,以轻松地为目标计算机交叉编译您的应用程序。 对于只专注于项目的应用程序部分的开发人员来说,Yocto工具过于强大,繁琐且复杂。另一边的SDK非常适合该用途,但是您不能使用它来更改工具链中的任何内容,而只能使用它。例如,如果需要在运行时库中应用错误或补丁,则需要重新生成SDK并将此新版本提供给开发人员。

简短说明:

  

它比SDK的功能更强大,但是我如何交叉构建它   另一个平台的环境?

您需要自定义Yocto元图层,以从一个平台更改为另一个平台。

  

是否有一个与git clone的环境功能相同的SDK?   意味着它有一个正常的烘烤,我可以交叉构建可启动映像   针对不同的目标?

不,我不这么认为

  

为什么SDK无法构建SDK?

由于这不是SDK的基本原理,因此sdk是生成的工具链,用于特定图像可以交叉编译程序,而已。

  

为什么SDK甚至不包含bitbake?

Bitbake是一种用于解析yocto配方(因此为meta层)的工具,因此,无需在SDK中使用此工具

  

为什么显然要为特定机器构建SDK或   架构,显然无法跨平台构建   建筑?开发SDK的过程甚至希望最终   预先指定的架构

我想我已经回答了这个问题,但是,关于您问题的第二部分。可能会有些敏捷,并同时启动BSP和应用程序。每周,您都会发布带有BSP的新更改的新SDK,并且对于开发人员来说,工具链始终是最新的(我承认这是一种非常理想的构想)

答案 1 :(得分:0)

https://www.yoctoproject.org/docs/2.6.1/ref-manual/ref-manual.html#cross-development-toolchain

似乎SDK和eSDK是可重定位工具链的示例;

  

开发人员在BitBake之外使用的可重定位工具链   开发将在目标设备上运行的应用程序。

这句话尤其使游戏失去意义:

  

您还可以找到有关使用可重定位工具链的更多信息。   在Yocto项目应用程序开发和扩展中   软件开发套件(eSDK)手册。

所以我想构建SDK和eSDK的git-clone-poky签出是:

  

仅在为目标体系结构构建映像时由BitBake使用的工具链

毫无疑问,我对此感兴趣:

  

适用于Yocto项目的工具链概念

并且应该:

  

请参阅Yocto中的“跨开发工具链生成”部分   项目概述和概念手册https://www.yoctoproject.org/docs/2.6.1/overview-manual/overview-manual.html#cross-development-toolchain-generation

当然,第一个图像清楚地表明SDK是用于构建应用程序的,而不是图像。我要构建图像(当然其中可能包含应用程序)。

因此,我不妨为其他应用程序构建者制作一个SDK,并将其应用程序合并到我的资源中,并为他们做最后的构建。

也可能是用于构建映像的工具链可以在SDK内运行,以便使用SDK的工具链,而不是主机Linux发行版工具链。 不,您不能