标签: openembedded

遵循 build-webos 的说明时,__libc_csu_fini 和 __libc_csu_init 未定义

我正在尝试构建 OpenWebOS,并遵循build-webos GitHub README中列出的计划。我正在使用全新的 32 位 Ubuntu 12.10 安装。事情有点坎坷。

然而,通过这里和那里的调整,我设法在出错之前达到 2500 步中的 350 步或(或其他)。问题是构建 glibc 的依赖性,它抱怨

(...)/sysdeps/i386/start.S:107: undefined reference to `__libc_csu_fini'
(...)/sysdeps/i386/start.S:108: undefined reference to `__libc_csu_init'
Run Code Online (Sandbox Code Playgroud)

在网上搜索发现,人们在不构建 glibc 本身时发生这种情况的各种情况:

ld 抱怨:在函数“_start”中,对“__libc_csu_fini”和“__libc_csu_init”的未定义引用

直接使用 ld 链接 C 程序失败,未定义对“__libc_csu_fini”的引用

但这是在构建自定义嵌入式 LIBC 期间:eglibc。所以有点不同,我能找到的最接近的案例是OpenEmbedded 列表上的这个 2009 年线程。我不知道如何在 WebOS 构建结构的令人困惑的充满“bakefile”的宇宙中将他们的补丁付诸实践,这是令人眼花缭乱的奇怪。

失败的命令行怪物我将“简化”为以下内容:

gcc -m32 -march = i586 --sysroot = / home / webos / build-webos / BUILD-qemux86 / sysroots / qemux86-tcbootstrap -nostdlib -nostartfiles -o iconv / iconvconfig -Wl,-dynamic-linker = / lib / ld …

gcc glibc linker-errors webos openembedded

5
推荐指数
1
解决办法
4094
查看次数

如何覆盖另一个 .bbappend

systemd我用和构建了一个图像dhcp-client。在配方中dhcpmeta-openembedded/meta-systemd/oe-core/recipes-connectivity/dhcp一个 bbappend 创建 dhclient.service。我想修改(或覆盖)这个文件,但是当我启动 bitbake 时,我有一个错误告诉我Applying patch 0001-dhclient-modify-interface.patch can't find file to patch at input line 5

这是我的 dhclient.service 补丁:

Index: 4.3.3-r0/dhclient.service
===================================================================
--- 4.3.3-r0.orig/dhclient.service
+++ 4.3.3-r0/dhclient.service
@@ -6,7 +6,7 @@ After=syslog.target network.target
 Type=forking
 PIDFile=/var/run/dhclient.pid
 EnvironmentFile=-/etc/default/dhcp-client
-ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases $INTERFACES
+ExecStart=/sbin/dhclient -cf /etc/dhcp/dhclient.conf -q -lf /var/lib/dhcp/dhclient.leases eth0

 [Install]
 WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

还有我的 dhcp_%.bbappend :

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += "file://dhclient.service"
Run Code Online (Sandbox Code Playgroud)

我也尝试覆盖该文件,但它似乎完全忽略我的文件......

我想默认启用此功能,但如何覆盖此 ligne(存在于 dhcp 文件夹中)以enableSYSTEMD_AUTO_ENABLE_dhcp-client = "disable"

linux dhcp openembedded yocto

5
推荐指数
1
解决办法
4735
查看次数

bitbake 因 ExpansionError 失败

语境:

我正在按照NXP i.MX7 参考为 i.MX 7 SABRE 板构建 Linux 映像。这个过程很顺利,我成功地在板上构建并加载了 krogoth 图像。当我尝试将openembedded-core层添加到我的图像时出现问题。我立即收到以下错误。我包含了我的bblayers.conf以供参考。任何帮助,将不胜感激。我什至不需要sqlite,所以如果有办法绕过它,那就没问题了。

错误:

ERROR: ExpansionError during parsing /fsl-community-bsp-platform/sources/openembedded-core/meta/recipes-support/sqlite/sqlite3_3.16.2.bb: Failure expanding variable SQLITE_PV, expression was ${@sqlite_download_version(d)} which triggered exception TypeError: getVar() takes at least 3 arguments (2 given)
Run Code Online (Sandbox Code Playgroud)

bblayers.conf

POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"

BBFILES ?= ""
BBLAYERS = " \
  ${BSPDIR}/sources/poky/meta \
  ${BSPDIR}/sources/poky/meta-poky \
  \
  ${BSPDIR}/sources/openembedded-core/meta \
  \
  ${BSPDIR}/sources/meta-openembedded/meta-oe \
  ${BSPDIR}/sources/meta-openembedded/meta-multimedia \
  \
  ${BSPDIR}/sources/meta-fsl-arm \
  ${BSPDIR}/sources/meta-fsl-arm-extra \ …
Run Code Online (Sandbox Code Playgroud)

openembedded bitbake yocto imx7

5
推荐指数
1
解决办法
9370
查看次数

配方中的函数未被覆盖

我想重写配方 (bb) 中从 bbclass 继承的函数,但它不起作用 - 执行 bbclass(超类)的函数而不是新函数。

这是一个最小的(非)工作示例。

班级:

# myclass.bbclass

do_compile() {
    echo MyClass
}
Run Code Online (Sandbox Code Playgroud)

食谱:

# myrecipe.bb

do_compile() {
    echo MyRecipe
}

inherit myclass
Run Code Online (Sandbox Code Playgroud)

编译配方后,日志文件如下所示:

$ cat temp/log.do_compile
DEBUG: Executing shell function do_compile
MyClass
DEBUG: Shell function do_compile finished
Run Code Online (Sandbox Code Playgroud)

为什么不覆盖do_compile工作?

openembedded bitbake yocto

5
推荐指数
1
解决办法
1675
查看次数

如何将配方限制为仅限本机和nativesdk?

我有一个配方,我想阻止为目标构建该配方。

据我所知,给定一个配方xyz.bb,添加BBCLASSEXTEND += " native nativesdk"“神奇”可以实现以下所有功能:

$ bitbake xyz           # 1
$ bitbake nativesdk-xyz # 2
$ bitbake xyz-native    # 3
Run Code Online (Sandbox Code Playgroud)

我只想要数字 2 和 3。我明确不希望数字 #1 成为可能(可能xyz有 GPL v3 许可证,所以我从不希望它出现在目标图像中)

我尝试命名配方xyz-native.bb并添加BBCLASSEXTEND += " nativesdk",但这产生了可构建的目标,如下所示。

$ bitbake xyz-native           # which is what I want
$ bitbake nativesdk-xyz-native # which is NOT what I want
Run Code Online (Sandbox Code Playgroud)

我能看到的唯一其他选项是重命名xyz.bbxyz.inc,然后创建nativesdk-xyz.bband xyz-native.bb,两者都只需要通用xyz.inc文件。

我缺少什么?

openembedded bitbake yocto

5
推荐指数
1
解决办法
4391
查看次数

Yocto - 创建并填充一个单独的 /home 分区

我正在创建一个基于 x86 的非常简单的 Yocto 图像。

我希望 / 文件系统是只读的,所以我设置了

IMAGE_FEATURES_append = " read-only-rootfs "
Run Code Online (Sandbox Code Playgroud)

在原件的自定义副本中core-image-minimal.bb。不过,我确实希望将/home可写的放在一个单独的分区上。

所以,我添加了一行

part /home --ondisk sda --fstype=ext4 --label home --align 1024 --size 600
Run Code Online (Sandbox Code Playgroud)

在 genericx86.wks 中。这会/home在最终 wic 映像中创建实际分区,但它自然不保存任何数据,因为没有对应的数据rootfs。这会导致启动后出现以下非常预期的消息:No directory, logging in with HOME=/.

互联网上关于这方面的信息令人惊讶地很少。有这样的解释:

创建或修改构建配方来为每个分区准备一个 rootfs 目录要简单得多。

我只是希望文档或示例中有任何关于如何实现这一目标的参考。

我可以看到分区由 python 脚本(插件)填充,例如rootfs.py,并且IMAGE_ROOTFS_SIZE在提到的图像配方文件中指定了图像参数,例如genericx86.wks,但这不足以让我将这些部分连接在一起。

我已经阅读了创建分区图像使用 wic和链接的openembedded kickstart手册,那里没有任何线索。

感谢某人的善意帮助。

openembedded yocto yocto-wic

5
推荐指数
1
解决办法
3512
查看次数

Yocto 修改源代码后重建镜像

对驱动程序源代码进行一些修改后如何重建映像?

我已经尝试过 bitbake -f -c 编译和 bitbake 但我无法在驱动程序中找到修改的设置。有人可以告诉我如何使用修改后的代码重建图像。

openembedded bitbake yocto

5
推荐指数
2
解决办法
2万
查看次数

没有通过LDFLAGS?[ld标志]

我创建了一个食谱,摘要如下:

do_install() {
  install -d ${D}/GreenTea
  cp ${S}/foo.sh ${D}/GreenTea
  cp ${S}/foo.so ${D}/GreenTea
Run Code Online (Sandbox Code Playgroud)

当bitbake这个食谱时,它显示:没有通过LDFLAGS?[ld标志]

ERROR: greentea-1.0-r0 do_package_qa: QA Issue: No GNU_HASH in the ELF binary /home/tea/greentea4/build/tmp/work/corei7-64-poky-linux/greentea/1.0-r0/packages-split/greentea/GreenTea/foo.so, didn't pass LDFLAGS? [ldflags]
Run Code Online (Sandbox Code Playgroud)

我能做些什么?

openembedded bitbake yocto

5
推荐指数
2
解决办法
8152
查看次数

对于初学者Yokto项目或OpenEmbedded来说哪个更好,建立一个自己的嵌入式发行版?

看完一些视频/会议,阅读文档......我仍然无法确定哪个更好:OpenEmbedded或Yocto用于构建自己的实时发行版(更好的是说linux内核).

我正在进行的项目是有时间限制的(我可以忍受将近一个月的时间来使发行版在目标上工作,稍后将添加一些外围设备).所以我不想在以后沮丧,我要求你根据自己的经验估计趋势,以及在我的专业经验中可能给我更多的价值.

我的目标是NI MyRIO板,系统主要目标是管理传感器网络.

提前致谢 ;)

linux embedded-linux openembedded

4
推荐指数
1
解决办法
4751
查看次数

使用FILES _ $ {PN}的示例

即使我阅读了手册,我也很难理解FILES _ $ {PN}.例如,我正在研究制作启动脚本的这个例子.在我写了类似的东西之后,我收到了这些错误消息.

ERROR: initscriptd-1.0-r0 do_package: QA Issue: initscriptd: Files/directories were installed but not shipped in any package:
  /usr
  /usr/sbin
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
initscriptd: 2 installed and not shipped files. [installed-vs-shipped]
ERROR: initscriptd-1.0-r0 do_package: Fatal QA errors found, failing task.
ERROR: initscriptd-1.0-r0 do_package: Function failed: do_package
ERROR: Logfile of failure stored in: /home/yahia/Desktop/elinux_dev/bake_factory/poky-pyro-17.0.1/build/tmp/work/core2-64-poky-linux/initscriptd/1.0-r0/temp/log.do_package.5252
ERROR: Task (/home/yahia/Desktop/elinux_dev/bake_factory/poky-pyro-17.0.1/meta-mylayer/recipes-core/mylayer-initscript/initscriptd.bb:do_package) failed with …
Run Code Online (Sandbox Code Playgroud)

openembedded yocto

4
推荐指数
1
解决办法
9807
查看次数