标签: bitbake

在 OpenEmbedded 中选择内核版本

我想使用 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 将构建的内核版本吗?

build linux-kernel openembedded angstrom-linux bitbake

3
推荐指数
1
解决办法
3408
查看次数

什么导致 BitBake 工作进程意外退出?

我有一个在 Docker 容器(CentOS 7)上运行的 BitBake 构建过程。在recipe gcc-cross-i586-5.2.0-r0: task do_compile我尝试的每次运行中,BitBake 都会失败。

的输出示例bitbake

NOTE: recipe gcc-cross-i586-5.2.0-r0: task do_compile: Started
ERROR: Worker process (367) exited unexpectedly (-9), shutting down...
ERROR: Worker process (367) exited unexpectedly (-9), shutting down...
ERROR: Worker process (367) exited unexpectedly (-9), shutting down...
ERROR: Worker process (367) exited unexpectedly (-9), shutting down...
NOTE: Tasks Summary: Attempted 1538 tasks of which 17 didn't need to be rerun and all succeeded.
Run Code Online (Sandbox Code Playgroud)

这是问题recipe gcc-cross-i586-5.2.0-r0: task do_compile …

linux openembedded bitbake docker yocto

3
推荐指数
1
解决办法
2816
查看次数

如何更改基于autotools的Bitbake配方的安装路径?

我有一个基于autotools的BitBake配方,我希望安装二进制文件/usr/local/bin和安装库/usr/local/lib(而不是/usr/bin/usr/lib,它们是默认的目标目录).

这是autotools.bbclass我发现重要文件的一部分.

CONFIGUREOPTS = " --build=${BUILD_SYS} \
                  --host=${HOST_SYS} \
                  --target=${TARGET_SYS} \
                  --prefix=${prefix} \
                  --exec_prefix=${exec_prefix} \
                  --bindir=${bindir} \
                  --sbindir=${sbindir} \
                  --libexecdir=${libexecdir} \
                  --datadir=${datadir} \
                  --sysconfdir=${sysconfdir} \
                  --sharedstatedir=${sharedstatedir} \
                  --localstatedir=${localstatedir} \
                  --libdir=${libdir} \
                  ...
Run Code Online (Sandbox Code Playgroud)

我认为,最简单的方法来完成我想要做的是简单地改变${bindir}${libdir},或者改变${prefix}/usr/local,但我还没有这方面的任何成功.有没有办法改变这些安装变量,或者我是否以错误的方式考虑这个问题?


更新:

策略1

根据Ross Burton的建议,我尝试将以下内容添加到我的食谱中:

prefix="/usr/local"
exec_prefix="/usr/local"
Run Code Online (Sandbox Code Playgroud)

但这会导致构建在该配方的do_configure()任务期间失败,并返回以下内容:

| checking for GLIB... no
| configure: error: Package requirements (glib-2.0 >= 2.12.3) were not met:
| 
| No package …
Run Code Online (Sandbox Code Playgroud)

openembedded bitbake yocto

3
推荐指数
1
解决办法
3102
查看次数

错误文件名太长Yocto Project

我正在开发一个Yocto项目,版本:poky-jethro

我想为Raspberry Pi构建一个版本的发行版poky

Build Configuration:
BB_VERSION        = "1.28.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "Ubuntu-14.04"
TARGET_SYS        = "arm-poky-linux-gnueabi"
MACHINE           = "raspberrypi"
DISTRO            = "poky"
DISTRO_VERSION    = "2.0.1"
TUNE_FEATURES     = "arm armv6 vfp arm1176jzfs callconvention-hard"
TARGET_FPU        = "vfp"
meta              
meta-yocto        = "jethro:3b223f75eec1738fbc913858e8e11c8305e3edcb"
meta-oe           
meta-multimedia   
meta-networking   
meta-python       = "jethro:c305ac5d2f5285d5eec8952a4ca7f3b4f89aed96"
meta-qt5          = "jethro:9bfcf79fcd824efb9f2a9bd72ecbedfee1315c96"
meta-raspberrypi  = "jethro:f2cff839f52a6e6211337fc45c7c3eabf0fac113"
meta-rpi          = "jethro:3ef71867eeb3669da40019469385a437843e8245"
Run Code Online (Sandbox Code Playgroud)

我成功地在另一个操作系统"Ubuntu-14.0403"上构建系统但是当我尝试在另一个版本"Ubuntu-14.0404"上构建系统时

出现此错误

[Errno 36]文件名太长

[Errno 36]文件名太长

embedded-linux openembedded bitbake ubuntu-14.04 yocto

3
推荐指数
1
解决办法
2130
查看次数

Bitbake:强制执行一个配方任务,然后执行所有操作

我想强制重新编译一个包,就像那样:

bitbake -f -c compile mypackage
Run Code Online (Sandbox Code Playgroud)

不过,我也希望被执行的所有以下任务(如install,package等),就像我曾呼吁bitbake mypackage从一个完全干净的状态.这可以在完成一个步骤,而不是下面的两个?

bitbake -f -c compile mypackage
bitbake mypackage
Run Code Online (Sandbox Code Playgroud)

或者作为替代解决方案,我可以以某种方式"污染"编译任务,以便bitbake mypackage从编译开始执行所有操作吗?

openembedded bitbake yocto

3
推荐指数
1
解决办法
4036
查看次数

如何在 Yocto 环境中进入 u-boot 的 menuconfig

我第一次将 Yocto 用于带有 Xilinx Zynq 的 ARM 嵌入式系统。我想进行一些需要进入 menuconfig 实用程序的配置更改。Yocto 文档展示了如何为 Linux 内核执行此操作

bitbake yocto-xlnx -c menuconfig
Run Code Online (Sandbox Code Playgroud)

其中,对于 Xilinx,我变成了

bitbake linux-xlnx -c menuconfig
Run Code Online (Sandbox Code Playgroud)

它运作良好。

现在,我想对 u-boot 执行相同的操作,并使用 menuconfig 实用程序更改 .config 文件。我在 Yocto 或 Xilinx 文档中找不到任何方法。我尝试了显而易见的

bitbake u-boot-xlnx -c menuconfig
Run Code Online (Sandbox Code Playgroud)

只是为了得到一条错误消息:

错误:目标 u-boot-xlnx 不存在任务 do_menuconfig

知道如何使用 Yocto 进入 u-boot menuconfig 吗?

编辑:这是我使用的图层

BBLAYERS ?= " \
/home/sylvain/poky/meta \
/home/sylvain/poky/meta-poky \
/home/sylvain/poky/meta-yocto-bsp \
/home/sylvain/poky/openembedded-core/meta \
/home/sylvain/poky/meta-xilinx \
"
Run Code Online (Sandbox Code Playgroud)

u-boot bitbake yocto

3
推荐指数
2
解决办法
7964
查看次数

如何强制在Yocto上重新编译软件包

TL; DR:是否有一种方法可以在每次生成映像时强制重新编译程序包?

我有一个bbappend,do_deploy_append后面附加了一个文件,如果我修改此步骤,则在使用它生成图像时不会重新编译该配方。这可能会导致很难找到错误。Bitbake假定它没有改变。我只有2个这样的软件包,非常小。

是否有一个参数可以强制不手动进行清理和重新编译那些软件包?

我正在使用Yocto morty

bitbake yocto

3
推荐指数
1
解决办法
2908
查看次数

YOCTO 如何创建一个基本的 ubuntu 16.04 linux

如果我不得不使用 Yocto,但我不需要自定义操作系统,而是更喜欢常见的 ubuntu 16.04,该怎么办?有没有办法使用 yocto 环境创建它?

ubuntu bitbake yocto

3
推荐指数
1
解决办法
3504
查看次数

Yocto/Bitbake 将空目录添加到 rootfs 嵌入式 Linux 的方法

是否有将新的空目录添加到 rootfs 的方法?我尝试将其添加到我的 bbappend 文件之一中:

do_install() {
   install -d ${D}/tmp/myNewDir
}
FILES_${PN} += "/tmp/myNewDir"
Run Code Online (Sandbox Code Playgroud)

但我收到了一个非描述性错误, Function failed: do_install

embedded-linux bitbake yocto

3
推荐指数
1
解决办法
6409
查看次数

对使用 Yocto 的 install -m 和 install -d 感到困惑

我接管了一个 Yocto 项目,在一个 .bb 配方文件中,我看到以下几行在图像中安装新目录:

do_install() {
install -m 0755 -d ${DEPLOY_DIR_IMAGE}/app
install -m 0755 -d ${DEPLOY_DIR_IMAGE}/app/apiary
install -m 0755 -d ${DEPLOY_DIR_IMAGE}/app/lib
install -m 0755 -d ${DEPLOY_DIR_IMAGE}/app/config
install -m 0755 -d ${DEPLOY_DIR_IMAGE}/app/scripts
install -m 0755 -d ${DEPLOY_DIR_IMAGE}/app/keys
Run Code Online (Sandbox Code Playgroud)

这有效,但我很困惑。从我阅读 Yocto 和做 do_install 来看,我认为-m选项仅用于安装文件而不是目录。

使用 install 命令执行install -m 0755 -d-m-d选项的效果是什么?

另外,为什么我看到的大多数其他目录安装中没有 ${D} 变量?对于这样的问题,我通常不会求助于 Stack Overflow,但有太多的不一致,我不明白,而且很难找到答案。

linux makefile rootfs bitbake yocto

3
推荐指数
1
解决办法
5536
查看次数