我有一个配方(比如my_package_1.0.bb),用于构建库并使用我需要的库和头来填充sysroot进行开发.我还看到我的包的.ipk是在build/tmp/deploy/ipk /下创建的.
我的要求是,我想共享库,标题和在我的客户的sysroot目录中进行部署的配方(用于开发),但不是我的包的源代码.处理这个问题的最佳方法是什么?
有没有办法分享.ipk和一些安装.ipk的方法?
PS:客户打算使用我的标题和库中的接口开发应用程序.客户没有许可我的包的来源.
我想在我的yocto / openembedded项目中添加更多的python模块,但是我不确定该怎么做?我希望添加flask及其依赖项。
该Yocto计划允许在大多数的配置文件,但没有内使用相对路径的./build/conf/bblayers.conf文件.什么是阻止使用的任何东西,但对于绝对路径的原因BBLAYERS和BBLAYERS_NON_REMOVABLE变量?
我查看了yocto 2.0版(当前版本)的BitBake用户手册,但这并没有解释推理.我还检查了一些较旧的手动版本,但在谈论bblayers.conf文件或BBLAYERS变量时似乎没有提到推理.同样的文件还包含BBPATH = "${TOPDIR}"至少动态分配的文件,而不是远离根yotco目录.
我最好的猜测是bblayers.conf文件特定于它正在运行的系统.这将使它不适合通过源代码控制在开发人员之间共享,绝对路径会强制人们在收到副本时编辑文件.这似乎不是一个很好的理由,因此这个问题.
我提供了一个Yocto SDK来为嵌入式目标交叉构建应用程序.应用程序本身是使用CMake构建的.SDK安装脚本提供了许多必要的环境变量(如交叉编译器的位置,sysroot等),到目前为止,它足以构建应用程序.
但是,最近应用程序依赖于Boost库(通过find_package(Boost REQUIRED)CMakeLists.txt中的命令).现在,CMake抱怨它无法找到库,即使它已安装在SDK sysroot中.但是,如果我直接在Yocto中构建应用程序,它可以正常工作.
经过一些研究后发现,Yocto生成了一个toolchain.cmake添加到cmake调用的文件.在此文件中,CMAKE_FIND_ROOT_PATH设置了变量,CMake需要查找库.使用这样的工具链文件,我也可以使用SDK构建.
现在我想知道Yocto是否提供了使用SDK导出这样一个工具链文件的任何机制.或者,如果SDK提供了一个脚本或其他东西,可以直接在SDK构建主机上自动创建工具链文件.
或者我应该告诉SDK的用户手动创建工具链文件并将其添加到他们的cmake调用?
在基于Yocto的Embedded Linux发行版中,我真的很感兴趣,可以在执行映像构建配方之前,从将要构建并安装到映像文件的每个相关层中查找软件包/配方/内核模块的完整列表:
bitbake my-image-minimal
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?在这方面的任何指导是值得赞赏的。
提前致谢。
我正在尝试yocto(2.0,jethro),我想从头开始构建一个图像core-image-minimal.这很好用.
每个网站都提到build/config/local.conf用我的自定义(部分)修改文件.例如,目标机器(通过MACHINE)或某些全局设置(通过EXTRA_IMAGE_FEATURES).
我还需要修改一些特定的包,其方法是创建一个自定义层.到现在为止还挺好.
我不明白的是如何将我的所有配置"保存"到版本控制.我希望我更改的所有内容都位于我可以提交的文件中,以便其他任何人都可以重现完全相同的构建(甚至可以为该项目做出贡献).几乎所有东西build/config/local.conf都违背了这一目标; 该文件位于"构建"目录下,所以我不能只是克隆一个git repo并启动构建...
它真的是yocto项目的工作方式吗?或者我错过了一个不同的配置文件,我需要放置这些设置?我虽然可以将所有这些放在自定义图层中,但它似乎不起作用......
有什么想法或建议吗?
谢谢!
我是一个非常懒惰的人.在处理硬件/软件项目时,软件会永久更改.在这个开发阶段,更改配方中的commit/reversion-tags非常讨厌.我希望Yocto获取最新的git提交.这可能/如何做到这一点?我的示例食谱:
SUMMARY = "my test"
SECTION = "test"
LICENSE = "CLOSED"
inherit cmake
SRCREV = "f9bdbd6c631f07e427c010086c7c26a95eb2924e"
SRC_URI = "gitsm://myGit/mytest;protocol=http;branch=develop"
S = "${WORKDIR}/git/"
Run Code Online (Sandbox Code Playgroud) 我们使用Python 2作为嵌入式应用程序,我们目前正在Raspberry Pi上进行原型设计.它有点慢,但可以接受.
现在我们已经将应用程序移植到Python 3.但由于某种原因,应用程序运行速度比使用Python 2慢大约4倍!我期待Python 3有点慢,但不是这样的!
我们的Linux发行版基于Yocto 2.2 Morty,我们使用默认的Python 3.5.2配方,没有自定义.我们还使用了meta-raspberrypi层来实现Raspberry兼容性.
我试着计时"pip3 --help"并得到以下结果:
$ time pip3 --help >/dev/null
real 0m22.686s
user 0m22.210s
sys 0m0.420s
Run Code Online (Sandbox Code Playgroud)
然后我使用最新的Raspbian发行版在相同的硬件(同样的SD卡)上尝试相同的测试:
$ time pip3 --help >/dev/null
real 0m6.874s
user 0m6.530s
sys 0m0.310s
$ time pip --help >/dev/null
real 0m4.329s
user 0m4.000s
sys 0m0.300s
Run Code Online (Sandbox Code Playgroud)
Python 2点比Python 3快一点,但最重要的是pip3在Raspbian上的运行速度比在Yocto上快3倍!
测试是非常可重复的,因此它们不是由pyc生成或缓存或类似的东西引起的.
有任何想法如何让Yocto像Raspbian一样快?
更新:
下面有一些关于Raspbian与Yocto中不同版本的Python和Pip的讨论,所以我仅使用Python标准库创建了一个新的基准:
Yocto 2.2 Morty:
sh-4.3# time python3 --version
Python 3.5.2
real 0m0.024s
user 0m0.010s
sys 0m0.000s
sh-4.3# time python3 -c "import asyncio"
real 0m3.439s
user 0m3.300s
sys …Run Code Online (Sandbox Code Playgroud) 关于Yocto项目常见问题:
Yocto Project和OpenEmbedded共享一个名为openembedded-core的核心元数据集合.但是,这两个组织仍然是分开的,每个组织都有自己的重点.OpenEmbedded为各种体系结构,功能和应用程序提供了一整套元数据.Yocto项目致力于为核心架构和特定板提供功能强大,易于使用,可互操作,经过良好测试的工具,元数据和板级支持包(BSP).
我还没有得到任何清楚.这两个框架旨在构建Linux发行版.但我想知道它们具体区别于什么.不仅在技术上,而且在客观上,所以我可以争论为什么选择一个或另一个.
而且,为什么Yocto如此突出?尽管OE是第一个构建框架.
ps:我曾与Yocto Project合作过,但与OE合作过.
我正在尝试为Python 3 PyTorch创建一个简单的Yocto Python食谱。目标是Yocto从meta-tegra层为NVIDIA Jetson Nano制作的SD卡映像。没有这些配方,我就可以成功地从meta-tegra编译并引导映像。
NVIDIA本身已经编译并发布了“ .whl” Python软件包,可以在以下位置找到它们:https ://devtalk.nvidia.com/default/topic/1048776/official-tensorflow-for-jetson-nano-/
使用他们的构建说明,我尝试编写一个Bitbake配方来安装PyTorch,如下所示:
SUMMARY = "Facebook PyTorch AI"
DESCRIPTION = "Facebook PyTorch AI"
HOMEPAGE = "https://pytorch.org/"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=acf4d595f99e159bf31797aa872aef57"
inherit pypi
inherit setuptools3
#BBCLASSEXTEND = "native nativesdk"
DEPENDS += "python3-pytest-runner-native python3-pyyaml-native cmake-native"
do_configure_prepend() {
USE_NCCL=0
USE_DISTRIBUTED=0
TORCH_CUDA_ARCH_LIST="5.3;6.2;7.2"
}
do_compile_prepend() {
USE_NCCL=0
USE_DISTRIBUTED=0
TORCH_CUDA_ARCH_LIST="5.3;6.2;7.2"
}
SRC_URI = "gitsm://github.com/pytorch/pytorch.git;protocol=https"
SRCREV = "a3346e100e7f4e7ec90f18b7befcccc47d5a1c82"
S = "${WORKDIR}/git"
Run Code Online (Sandbox Code Playgroud)
问题是我遇到了以下错误。我认为这与我的环境变量未被获取有关,因为错误包括“ -DUSE_CUDA = False”,但是当我查看bitbake环境(bitbake -e)时,它似乎在那里。
这是错误:
**NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: …Run Code Online (Sandbox Code Playgroud) yocto ×10
bitbake ×6
openembedded ×4
python ×3
linux ×2
python-3.x ×2
recipe ×2
cmake ×1
git ×1
raspberry-pi ×1
raspbian ×1
sdk ×1
toolchain ×1