这里有一系列相关问题,因为我怀疑我问的是错误的问题。相关问题可以帮助某人辨别我的基本误会。
我已经通过:
我正在寻找一个可以使用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显然绑定了针对特定机器或体系结构的构建,而显然却无法针对不同体系结构进行交叉构建?建立SDK的过程甚至希望最终指定最终的架构
我习惯使用的是build-sysroot,它的跨工具链在某种伪/ proot / chroot下运行,并且我的源文件已装入其中。
我意识到Yocto / bitbake可以在后台执行此操作,所有配方缓存看起来都很棒,git clone checkout看起来很强大,devtool工作流程看起来很棒,但是当我尝试标准化此环境的生成时,一切都掉了下来,或使其交叉编译。
(我希望从包含一些本地conf文件的目标目录中获取环境文件以专门化构建,然后使用bitbake进行构建)
我错过了什么? -感谢您阅读本文;-)
答案 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发行版工具链。 不,您不能