我正在尝试用自己的包构建一个yocto图像.我在github上使用cmake的OpenCV代码.
我试着为它写一个食谱并面临很多错误.任何人都可以提供一些关于我的食谱中包含哪些功能或参数的提示.我的食谱如下
DESCRIPTION = "cameracapture application"
SECTION = "examples"
LICENSE = "CLOSED"
PR = "r0"
DEPENDS += "opencv"
SRC_URI = "git://https://github.com/zafrullahsyed/cameracapture.git;protocol=https;tag=v0.1"
EXTRA_OECMAKE=""
do_configure() {
cmake ../
}
inherit pkgconfig cmake
Run Code Online (Sandbox Code Playgroud)
我按照这些教程用cmake写了我的食谱但是徒劳无功: Bitbake Player食谱
bitbake是否存储调用的shell命令(沿着调用路径)?我可以在日志文件中找到shell-command输出,但是想查看实际的命令行.
我有一个配方(比如my_package_1.0.bb),用于构建库并使用我需要的库和头来填充sysroot进行开发.我还看到我的包的.ipk是在build/tmp/deploy/ipk /下创建的.
我的要求是,我想共享库,标题和在我的客户的sysroot目录中进行部署的配方(用于开发),但不是我的包的源代码.处理这个问题的最佳方法是什么?
有没有办法分享.ipk和一些安装.ipk的方法?
PS:客户打算使用我的标题和库中的接口开发应用程序.客户没有许可我的包的来源.
我想在我的yocto / openembedded项目中添加更多的python模块,但是我不确定该怎么做?我希望添加flask及其依赖项。
所以我在本地构建服务器上安装了 Yocto,因为谁想要大规模构建吞噬他们的工作区 amirite?
主机和服务器是 Arch Linux 4.19.44-1-lts
无论如何,我只是从这里找到的快速构建页面运行示例,当我尝试
$ runqemu qemux86
Run Code Online (Sandbox Code Playgroud)
从 ssh(启用 X11 转发)我得到的只是这个糟糕的输出:
runqemu - INFO - Running MACHINE=qemux86 bitbake -e... runqemu - INFO
- Continuing with the following parameters:
KERNEL: [/home/bob/poky/build/tmp/deploy/images/qemux86/bzImage--5.0.3+git0+f0b575cda6_3df4aae607-r0-qemux86-20190520164453.bin] MACHINE: [qemux86] FSTYPE: [ext4] ROOTFS: [/home/bob/poky/build/tmp/deploy/images/qemux86/core-image-sato-qemux86-20190520164453.rootfs.ext4] CONFFILE: [/home/bob/poky/build/tmp/deploy/images/qemux86/core-image-sato-qemux86-20190520164453.qemuboot.conf]
runqemu - INFO - Setting up tap interface under sudo [sudo] password for bob: runqemu - INFO - Network configuration:
192.168.7.2::192.168.7.1:255.255.255.0 runqemu - INFO - Running /home/bob/poky/build/tmp/work/x86_64-linux/qemu-helper-native/1.0-r1/recipe-sysroot-native/usr/bin/qemu-system-i386
-device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -drive file=/home/bob/poky/build/tmp/deploy/images/qemux86/core-image-sato-qemux86-20190520164453.rootfs.ext4,if=virtio,format=raw
-vga vmware -show-cursor …Run Code Online (Sandbox Code Playgroud) 我一直在试图建立和启动OpenEmbedded的核心的评估套件对飞思卡尔的ARM i.MX28,使用飞思卡尔ARM层为OpenEmbedded的核心.不幸的是,我找不到基本的"入门"指南(尽管有一个Yocto入门指南).不幸的是,我无法"开始",成功启动到主板的调试串口上的基本命令提示符.
这就是我能够拼凑起来的东西,就我迄今为止所做的而言.
mkdir -p oe-core/freescale-arm
cd oe-core/freescale-arm
git clone git://git.openembedded.org/openembedded-core oe-core
git clone git://github.com/Freescale/meta-fsl-arm.git
cd oe-core
git clone git://git.openembedded.org/meta-openembedded
git clone git://git.openembedded.org/bitbake bitbake
Run Code Online (Sandbox Code Playgroud)
. ./oe-init-build-env
Run Code Online (Sandbox Code Playgroud)
这使我们进入一个新的子目录build并设置某些环境变量.
编辑conf/bblayers.conf和local.conf文件:
conf/bblayers.conf应该添加meta-fls-arm和meta-oe添加图层BBLAYERS.例如:
BBLAYERS ?= " \
/home/craigm/oe-core/freescale-arm/oe-core/meta \
/home/craigm/oe-core/freescale-arm/oe-core/meta-openembedded/meta-oe \
${TOPDIR}/../../meta-fsl-arm \
"
Run Code Online (Sandbox Code Playgroud)
在conf/local.conf,我设置:
BB_NUMBER_THREADS = "4"
PARALLEL_MAKE = "-j 4"
MACHINE = "imx28evk"
Run Code Online (Sandbox Code Playgroud)
我最近开始构建基于Linux的嵌入式系统,这与我通常的嵌入式设备相去甚远,我可以完全控制所有内容.
作为其中的一部分,我正在研究Yocto/bitbake/OpenEmbedded构建系统.
我正在努力解决一件事,那就是分层概念,所以我试图弄清楚层使用/影响其他层的方式.
从我的理解至今,.bb配方文件使用require简单地包含另一个文件,类似于C的#include "myheader.h"这通常看起来本地.
甲.bbappend在"上"层将自动神奇地包括基础文件文件然后进行更改,排序的固有require.
相比之下,inherit关键字查找一个.bbclass在多,因为它所处的同样的方式类文件.bb的文件,并继承了所有从他们的detials(有点像#include <stdio.h>这又一般,看在系统区(A) ).
所以问题的第一部分是:我的理解是否正确?还是我太简单了?
然后我的问题的第二部分涉及BBEXTENDS根据我目前的理解使用.如果我们已经能够通过使用扩展配方require,那么在BBEXTENDS变量中列出所述配方的目的是什么?
(a)是的,我知道它们都完全依赖于标题的来源,我只是谈论它们的常用用法.
我需要foo在一个配方(foo-native)中安装一个本机脚本,调用它,然后在do_compile另一个(目标)配方的步骤中使用它- 调用它bar.
我的(最小)原生食谱
SRC_URI = "file://foo"
LICENSE = "CLOSED"
inherit native
BBCLASSEXTEND = "native"
S = "${WORKDIR}"
do_compile() {
:
}
do_install() {
install -d ${D}/usr/bin
install ${WORKDIR}/foo ${D}/usr/bin
}
Run Code Online (Sandbox Code Playgroud)
该脚本foo存在于一个目录中,该目录files位于配方旁边.即
foo/
??? files
? ??? foo
??? foo.bb
Run Code Online (Sandbox Code Playgroud)
我的目标食谱 bar
SRC_URI = ""
LICENSE = "CLOSED"
DEPENDS = "foo-native"
do_fetch[noexec] = "1"
do_configure[noexec] = "1"
do_compile() {
foo >myfile.json
}
do_install() {
install -d ${D}/etc
install ${WORKDIR}/myfile.json …Run Code Online (Sandbox Code Playgroud) 关于Yocto项目常见问题:
Yocto Project和OpenEmbedded共享一个名为openembedded-core的核心元数据集合.但是,这两个组织仍然是分开的,每个组织都有自己的重点.OpenEmbedded为各种体系结构,功能和应用程序提供了一整套元数据.Yocto项目致力于为核心架构和特定板提供功能强大,易于使用,可互操作,经过良好测试的工具,元数据和板级支持包(BSP).
我还没有得到任何清楚.这两个框架旨在构建Linux发行版.但我想知道它们具体区别于什么.不仅在技术上,而且在客观上,所以我可以争论为什么选择一个或另一个.
而且,为什么Yocto如此突出?尽管OE是第一个构建框架.
ps:我曾与Yocto Project合作过,但与OE合作过.
我正在尝试为 Yocto 中的自定义库创建一个配方。我目前收到此错误:
ERROR: ... do_package: QA Issue: pot-plugin: Files/directories were installed but not shipped in any package:
/usr/lib/qt5/plugins/mediaservice/a.so.1.0
/usr/lib/qt5/plugins/mediaservice/a.so.1
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
Run Code Online (Sandbox Code Playgroud)
我已经设置了这些,FILES_${PN}但在这种情况下,Yocto 抱怨那些符号链接太多,并且不属于该包。实际上,正确的做法是将它们也从 sysroot 本身中删除。因此,我尝试定义该do_install步骤,但在创建包之前找不到如何删除这些步骤。我做了类似的事情:
do_install {
rm <some_path>/a.so.1.0
rm <some_path>/a.so.1
}
Run Code Online (Sandbox Code Playgroud)
但我找不到正确的使用路径。有人可以解释这是否是解决问题的正确方法,如果是,我应该使用什么路径在安装这些文件之后和创建包之前删除这些文件?谢谢!