我想使用 OpenEmbedded在Ubuntu 13.04 主机上构建 Angstrom 内核。
git clone git://github.com/Angstrom-distribution/setup-scripts.git
cd setup-scripts
MACHINE=beagleboard./oebb.sh config beagleboard
MACHINE=beagleboard./oebb.sh update
MACHINE=beagleboard./oebb.sh bitbake virtual/kernel
Run Code Online (Sandbox Code Playgroud)
构建内核的原因是为了能够在主机上交叉编译内核驱动程序,针对 Angstrom 发行版(BeagleBoard)。Beagleboard 运行 2.6.32 的预构建映像。
据我所知,交叉编译不仅必须针对 Angstrom 发行版,还必须针对 BeagleBoard 运行的相同内核版本。OE如何选择“首选”版本?有什么办法可以选择 BitBake 将构建的内核版本吗?
我正在尝试将 zbar 的配方从 0.10.0 更新到 0.20.1。这是原始配方:
我修改过的食谱在这个问题的底部。包确实可以编译,但问题是在“打包”步骤期间发生了一些事情,并且“work”目录被清除,除了“work”目录中的“temp”目录。在编译过程中,如果我列出工作目录中的文件,我期望的一切都存在,但是在编译成功后,有些东西会清理文件。我究竟做错了什么?
编译期间:
user@ubuntu:~/rpi/build/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/zbar/0.20.1-r0$ cd ../0.20.1-r0/ ; ls
build image pkgdata sysroot-destdir
configure.sstate license-destdir pseudo temp
debugsources.list package recipe-sysroot
git packages-split recipe-sysroot-native
Run Code Online (Sandbox Code Playgroud)
编译后:
user@ubuntu:~/rpi/build/tmp/work/cortexa7hf-neon-vfpv4-poky-linux-gnueabi/zbar/0.20.1-r0$ cd ../0.20.1-r0/ ; ls
temp
Run Code Online (Sandbox Code Playgroud)
约克托食谱:
DESRIPTION = "2D barcode scanner toolkit."
SECTION = "graphics"
LICENSE = "LGPL-2.1"
DEPENDS = "pkgconfig intltool-native libpng jpeg"
LIC_FILES_CHKSUM = "file://LICENSE;md5=243b725d71bb5df4a1e5920b344b86ad"
S = "${WORKDIR}/git"
SRCREV = "edcf08b49e0a5fe71c18fa9d4b8ed83ed8fc9082"
SRC_URI = "git://github.com/mchehab/zbar.git"
inherit autotools pkgconfig
EXTRA_OECONF = " --without-x --without-imagemagick --without-qt --without-python2 --disable-video --without-gtk"
FILES_${PN} += …Run Code Online (Sandbox Code Playgroud) 如何在arago项目构建中编写自己的配方包?我知道它可以是bitbake文件.但我怎么写,不知道.我在互联网上搜索,但没有找到任何好的来源开始.有人可以提供链接或示例开始吗?
关心
Linux学习者.
我正在为openembedded-classic编写openembedded/bitbake配方.关于keyutils的我的食谱RDEPENDS,一切似乎都有效,除了一件事:我想在keyutils包安装的/etc/request-key.conf文件中附加一行.所以我在配方中添加了以下内容:
pkg_postinst_${PN} () {
echo 'create ... more stuff ..' >> ${sysconfdir}/request-key.conf
}
Run Code Online (Sandbox Code Playgroud)
但是,我生成的图像中缺少预期添加的行.update-rc.d如果这有任何区别,我的食谱会继承.
我的主要问题是:我如何调试这个?目前我正构建一个完整的rootfs图像,然后在其中进行搜索,看看是否显示更改.当然有更好的方法吗?
更新: 将食谱更改为:
pkg_postinst_${PN} () {
echo 'create ... more stuff ...' >> ${D}${sysconfdir}/request-key.conf
}
Run Code Online (Sandbox Code Playgroud)
但仍然没有运气.
我想要做的是在SRC_URI中定义文件(http://)或repo(git://)的辅助位置,如果第一个发生故障的话.
就像是:
SRC_URI = "http://site1/mytar.tar.gz \
http://site2/mytar.tar.gz \
Run Code Online (Sandbox Code Playgroud)
要么
SRC_URI = "git://site1/myrepo.git \
git://site2/myrepo.git
Run Code Online (Sandbox Code Playgroud)
如果第一个选项失败,它将尝试第二个选项而不是仅将它们相互下载.
我知道有预镜像,本地缓存和镜像,但我真的只想在BB配方中指定多个位置.
这似乎应该得到支持,但我找不到它.
要创建一个HelloWorld .ipk程序包,所描述的在这里,我克隆bitbake和OpenEmbedded作为
git clone git://git.openembedded.org/bitbake
git clone git://git.openembedded.org/openembedded
Run Code Online (Sandbox Code Playgroud)
然后导出以下varibales
export OEBASE=/media/sda3/open_env/
export PATH=$OEBASE/bitbak/ebin:$PATH
export BBPATH=$OEBASE/build:$OEBASE/openembedded
export BB_ENV_EXTRAWHITE="OEBASE"
Run Code Online (Sandbox Code Playgroud)
当我运行以下命令时,我得到以下错误:
bitbake -b packages/myhelloworld/myhelloworld_0.1.bb
Traceback (most recent call last):
File "/usr/bin/bitbake", line 35, in <module>
import bb
ImportError: No module named bb
Run Code Online (Sandbox Code Playgroud)
我这样做ubuntu 10.04.我在这里缺少什么?
编辑:
如回答所示,我执行了以下命令并获得如下错误:
git clone git://git.openembedded.org/openembedded-core
cd openembedded-core
git clone git://git.openembedded.org/bitbake
cd ..
git checkout dylan
cd bitbake
git checkout 1.18
cd ..
. oe-init-build-env
Run Code Online (Sandbox Code Playgroud)
build/conf/local.conf在myhelloworlddir中修改并创建dir openembedded-core/build/然后执行 …
我正在使用freescale.github.io飞思卡尔社区BSP。
在local.conf中MACHINE ?? = "wandboard",我添加了EXTRA_IMAGE_FEATURES += "tools-debug"
这会将gdb,gdbserver和其他一些工具添加到rootfs。
SUMMARY = "Debugging tools"
LICENSE = "MIT"
inherit packagegroup
PR = "r3"
MTRACE = ""
MTRACE_libc-glibc = "libc-mtrace"
RDEPENDS_${PN} = "\
gdb \
gdbserver \
strace \
${MTRACE} \
"
Run Code Online (Sandbox Code Playgroud)
但是,我收到了以下错误,即bitbake无法找到PN gdbserver。
Computing transaction...error: Can't install packagegroup-core-tools-debug-1.0-r3@all: no package provides gdbserver
gdbserver是否已从bsp中删除?为什么将其删除?如果没有,在哪里可以找到gdbserver?
我们正在为我们的项目使用Variscite VAR-SOM-AM33平台,软件平台基于OpenEmbedded/Yocto.
为确保硬件与当前软件一起运行,设备已连接到互联网.到目前为止,我们一直在遵循OE配方并生成ipk并通过opkg应用软件更新.
但是,由于某些配方写得不好(在升级过程中无法卸载/安装),因此该过程并不令人满意.什么强大的技术/解决方案可用于基于OE/Yocto的系统?
提前致谢.
默认情况下,所有Yocto项目都带有-O2优化级别
如何使用-O0覆盖单个包?
我想做这样的事情:
if [ "${BB_NO_NETWORK}" == "1" ]; then
SRCREV ?= "a2d1f0225692c7c054014ec4dfc4dd13a35245ee"
else
SRCREV ?= "${AUTOREV}"
fi
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个无法解析的错误
这是我要工作的。
SRCREV_FORMAT = "${@bb.utils.contains('BB_NO_NETWORK', '1', "v16_pcmx", "${AUTOREV}", d)}"
SRCREV_d3v16 = "${@bb.utils.contains('BB_NO_NETWORK', '1', "a2d1f0225692c7c054014ec4dfc4dd13a35245ee", "${AUTOREV}", d)}"
SRCREV_v16 = "${@bb.utils.contains('BB_NO_NETWORK', '1', "a2d1f0225692c7c054014ec4dfc4dd13a35245ee", "${AUTOREV}", d)}"
SRCREV_pcmx-native = "${@bb.utils.contains('BB_NO_NETWORK', '1', "d09e0b91ae34d807d3df27908f045e58a52e0c4c", "${AUTOREV}", d)}"
SRCREV_pcmx-pn-pcmx = "${@bb.utils.contains('BB_NO_NETWORK', '1', "d09e0b91ae34d807d3df27908f045e58a52e0c4c", "${AUTOREV}", d)}"
SRCREV_pcmx = "${@bb.utils.contains('BB_NO_NETWORK', '1', "d09e0b91ae34d807d3df27908f045e58a52e0c4c", "${AUTOREV}", d)}"
SRCREV_pn-pcmx = "${@bb.utils.contains('BB_NO_NETWORK', '1', "d09e0b91ae34d807d3df27908f045e58a52e0c4c", "${AUTOREV}", d)}"
SRCREV = "${@bb.utils.contains('BB_NO_NETWORK', '1', "", "${AUTOREV}", d)}"
Run Code Online (Sandbox Code Playgroud)
此尝试失败:
SRCREV_FORMAT = "${@ "v16_pcmx" if …Run Code Online (Sandbox Code Playgroud) openembedded ×10
bitbake ×6
yocto ×6
linux ×2
build ×1
linux-kernel ×1
package ×1
packages ×1
python ×1
zbar ×1