标签: openembedded

嵌入式Linux中只有一种--hash-style.为什么?

我正在尝试使用基于OpenEmbedded的Arago构建并部署到rootfs中的软件包.不幸的是,软件包包括预构建的共享库.据我所知,Arago构建了整个Linux发行版--hash-style=gnu,而我建议使用这些共享库--hash-style=sysv,我怀疑.至少构建在"ELF二进制文件中没有GNU_HASH"QA问题中停止.

我明白什么是哈希.但我想我不明白它们在系统运行时是如何被使用的.

为什么系统中的所有ELF都需要一个哈希样式?为什么动态链接器不能动态确定哈希样式而只是使用它?

ld embedded-linux openembedded

6
推荐指数
1
解决办法
4754
查看次数

为什么bitbake忽略了我的makefile中的CFLAGS?

我的应用程序的makefile为CFLAGS添加了几个东西,如下所示:

CFLAGS += -Wall -std=gnu99
Run Code Online (Sandbox Code Playgroud)

但是当我使用OpenEmbedded BitBake构建应用程序时,BitBake显然忽略了makefile中的CFLAGS变量.

我发现在应用程序的配方中添加以下行会导致在构建期间通过BitBake使用标志:

EXTRA_OEMAKE += "CFLAGS='-Wall -std=gnu99'"
Run Code Online (Sandbox Code Playgroud)

为什么BitBake会忽略makefile中的CFLAGS?此外,是否有比将上述线添加到配方更好的解决方案?

我更喜欢使用makefile的CFLAGS来消除冗余.

c linux makefile openembedded bitbake

6
推荐指数
1
解决办法
9509
查看次数

Yocto Poky和Texas Instruments Arago有什么区别?

我是该领域的新手,所以我的术语可能不正确。

我的目标是为配备了Texas Instruments AM335x ARM处理器的嵌入式设备构建自定义linux发行版。

我在Yocto 1.6.1(雏菊发行版),bitbake和HOB(初学者的总寿命)上玩了一点。
之后,我发现了德州仪器(TI)的Arago项目快速入门。看起来它根本不需要Yocto文件,而是重新下载bitbake,meta-openembedded层和新的meta-linaro层(我从未听说过)。

据我了解,我需要meta-ti层来构建AM335x。我可以将其复制到其他Yocto图层中,然后仅将其与Poky“一起使用”吗?
如果使用Arago进行构建,是否可以使用HOB和其他Yocto层?

Yocto / Poky和Arago有什么区别?它们在某种程度上兼容吗?Arago是否支持使用qemu运行图像?

cross-compiling openembedded arago yocto

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

如何在 OpenEmbedded BitBake 配方中递归安装目录结构?

我想通过使用某种递归安装例程而不是多次调用 install 来简化安装大型目录结构的 BitBake 配方。源目录布局在开发过程中经常发生变化,这导致配方修订比我想要处理的要多得多。

例如,以下 do_install() 将如何简化:

do_install() {
    install -d ${D}/foo
    install -m 0644 ${S}/foo/*.* ${D}/foo

    install -d ${D}/foo/a
    install -m 0644 ${S}/foo/a/*.* ${D}/foo/a

    install -d ${D}/foo/b
    install -m 0644 ${S}/foo/b/*.* ${D}/foo/b

    install -d ${D}/foo/c
    install -m 0644 ${S}/foo/c/*.* ${D}/foo/c

    install -d ${D}/bar
    install -m 0644 ${S}/bar/*.* ${D}/bar

    install -d ${D}/bar/a
    install -m 0644 ${S}/bar/a/*.* ${D}/bar/a

    install -d ${D}/bar/a/bananas
    install -m 0644 ${S}/bar/a/bananas/*.* ${D}/bar/a/bananas
}
Run Code Online (Sandbox Code Playgroud)

更像这个伪代码的东西:

do_install() {
    for each subdir in ${S}/foo/
        install subdir recursively to ${D}/foo/subdir …
Run Code Online (Sandbox Code Playgroud)

shell recipe openembedded bitbake

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

如何在yocto中创建do_populate_sysroot_append任务

我们如何向sysroot目录中添加一些其他内核文件?我想扩展do_populate_sysroot任务,我们如何才能在之后do_populate_sysroot和之前将更多文件复制到sysroot中do_package?我试图do_populate_sysroot_append()在配方中创建,但是它正在解析错误。populate_sysrootdo_package任务开始之前和之后,我们如何在sysroot中添加文件?我们如何在两者之间创建新任务?

openembedded yocto

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

yocto:如何安装命令语言环境和localedef?

如何在yocto项目中为我的映像安装命令locale和localedef?我尝试了以下方法:

IMAGE_INSTALL_append = " glibc-locale"
Run Code Online (Sandbox Code Playgroud)

但这行不通。我该怎么做?

openembedded yocto

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

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
查看次数

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
查看次数