标签: bitbake

bitbake:如何根据机器添加包?

我使用 构建的图像bitbake必须包含适用于不同机器的不同包(例如,我需要将包添加package1到图像 for machine1,而不是 for machine2)。

可以加线

IMAGE_INSTALL_append_machine1 = " package1"
Run Code Online (Sandbox Code Playgroud)

到图像配方。但我不认为这是可持续的,因为IMAGE_INSTALL_append_machine1可能在其他一些配方中定义(这不在我的控制之下),并且较早的定义被后一个覆盖。这就是我认为 Yocto 项目开发手册警告使用 IMAGE_INSTALL 的原因

我的担心有效吗?在这种情况下编写配方的正确方法是什么?

cross-platform bitbake yocto

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

如何在 yocto 中设置系统日志?

我喜欢配置系统日志。似乎设置系统日志的方法不止一种。我要求通用的方法/步骤来做到这一点。

我有几个用例。为简化起见,我想问一下如何配置 syslog 以在 /var/log/ 中写入无限长的日志文件。

以下步骤:

1.) 配置什么消息

1.1)创建自己的“syslog.conf”(定义/var/log/myLog)

1.2) 将其附加到“recipes-core/busybox”

2.) 配置如何登录

??

我找到了两个可能的地方:

@meta-poky -> "meta-poky/recipes-core/busybox/busybox/poky-tiny/defconfig"

#
# System Logging Utilities
#
CONFIG_SYSLOGD=y
CONFIG_FEATURE_ROTATE_LOGFILE=y
CONFIG_FEATURE_REMOTE_LOG=y
CONFIG_FEATURE_SYSLOGD_DUP=y
CONFIG_FEATURE_SYSLOGD_CFG=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
CONFIG_FEATURE_IPC_SYSLOG=y
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16
CONFIG_LOGREAD=y
CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING=y
CONFIG_KLOGD=y
CONFIG_FEATURE_KLOGD_KLOGCTL=y
CONFIG_LOGGER=y
Run Code Online (Sandbox Code Playgroud)

添加/更改:

"CONFIG_FEATURE_ROTATE_LOGFILE=n" by adding that line to meta-mylayer/conf/layer.conf"
Run Code Online (Sandbox Code Playgroud)

等等。

???

@“/etc/syslog-startup.conf”

# This configuration file is used by the busybox syslog init script,
# /etc/init.d/syslog[.busybox] to set syslog configuration at start time.

DESTINATION=file        # log destinations (buffer file remote)
LOGFILE=/var/log/messages   # where …
Run Code Online (Sandbox Code Playgroud)

linux syslog bitbake yocto

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

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:oe_runmake 失败,来自 bitbake 图像的 do_compile 出错

我正在为此构建 yocto 图像和新手。当我输入bitbake piflo命令(piflo 是我的图像名称)时出现错误,如下图所示:

oe_runmake 因 do_compile 而失败

它说ERROR: batctl-2017.1-r0 do_compile: oe_runmake failed,也pkg-config not found.从makefile说。

我从网上找到了一些解决方案并尝试过,但它给了我与上图相同的错误。它构建正常,但在获得新的 batctl 和 batman-adv 后,它构建失败。

有人对此有什么想法吗?请帮帮我。

如果需要更多信息或代码,我会编辑。

提前致谢。

bitbake yocto

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

在 yocto (poky) 中,为什么 build/ 文件夹中的图层配置是?

我是 yocto 的新手。我正在尝试学习如何添加包,如何创建新层等等......只是四处看看。从克隆 poky 开始并四处玩耍。

据我了解,该bblayers.conf文件对于项目配置和您最终构建的内容(哪些层和包进入您的最终图像)至关重要。

这可能是错误的假设,但我也有一种感觉,即 build/ 文件夹是您构建 (bitbake) 的地方。图像,构建它们所需的很多东西,大量的东西......如果你以某种方式破坏了它,你可以删除它并重建它。或者您可以只复制没有 build/ 文件夹的所有内容并继续在另一台计算机上工作。

显然情况并非如此。该build/conf/文件夹包含重要.conf文件,例如bblayers.conf.

有人可以解释为什么会这样吗?有没有一种优雅的方法来分离项目配置和构建文件夹?

bitbake yocto

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

将补丁应用到 yocto 配方中的文件

我有一个 yocto recipe 来编译来自 github 的代码。我修改了一些文件,并希望对从 github 获取的代码应用补丁。以下是我构建代码的秘诀。

SUMMARY = "Linux NFC stack for NCI based NXP NFC Controllers"
HOMEPAGE = "https://github.com/NXPNFCLinux/linux_libnfc-nci"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://src/include/linux_nfc_api.h;endline=17;md5=42fdb99b3ff2c12f594b22a774cb7308"
SECTION = "libs"

SRC_URI = "git://github.com/NXPNFCLinux/linux_libnfc-nci.git \
 
file:///home/pratyush/Desktop/custom_board/drivers/PN7150/linux_libnfc-nci/demoapp-main-patch1.patch"
SRCREV = "7cf539d3d9c0d682c8da5968fbf5615ae9993060"
PV = "2.1+git${SRCPV}"
EXTRA_OECONF =" --enable-pn7150"

S = "${WORKDIR}/git"

inherit autotools
FILES_${PN} += "${libdir}/libnfc_nci_linux-1.so"
FILES_SOLIBSDEV = "${libdir}/libnfc_nci_linux.so"
Run Code Online (Sandbox Code Playgroud)

按照我的补丁应用

--- /home/root/PN7150/linux_libnfc-nci/Makefile.am
+++ Makefile.am
@@ -1,7 +1,7 @@
lib_LTLIBRARIES = libnfc_nci_linux.la

-sbin_PROGRAMS = nfcDemoApp 
-nfcDemoApp_DEPENDENCIES = libnfc_nci_linux.la
+sbin_PROGRAMS = readNfc 
+readNfc_DEPENDENCIES = libnfc_nci_linux.la …
Run Code Online (Sandbox Code Playgroud)

patch bitbake yocto

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

每当运行 bitbake 时停止所有应用程序并锁定系统

当我在 yocto 中运行“bitbake machine”命令一段时间后,系统会停止 GNOME 并关闭所有应用程序,最终它会重定向到登录页面。我已经在此处添加了我的系统日志。`gnome-session[12517]: (polkit-gnome-authentication-agent-1:12657): Gdk-WARNING **: polkit-gnome-authentication-agent-1: X server 上的致命 IO 错误 11(资源暂时不可用) :0。

org.a11y.atspi.Registry[12461]: XIO:X 服务器“:0”上的致命 IO 错误 11(资源暂时不可用)

org.a11y.atspi.Registry[12461]:在 2871 个请求(2871 个已知处理)之后,剩余 0 个事件。

gnome-session[12517]: (unity-fallback-mount-helper:12655): Gdk-WARNING **: unity-fallback-mount-helper: X server :0 上的致命 IO 错误 11(资源暂时不可用)。

gnome-session[12517]: (update-notifier:12906): Gdk-WARNING **: update-notifier: Fatal IO error 11 (Resource暂时不可用) on X server:0。

gnome-session[12517]: (nm-applet:12653): Gdk-WARNING **: nm-applet: X server :0 上的致命 IO 错误 11(资源暂时不可用)。

org.gnome.Terminal[12386]: (gnome-terminal-server:12811): Gdk-WARNING **: gnome-terminal-server: X server :0 上的致命 IO 错误 11(资源暂时不可用)。

gnome-session[12517]: (gnome-software:12654): …

bitbake yocto

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

在 BitBake 中使用条件语法(覆盖)

阅读一本关于 Yocto 的书。到了下面的页面,上面写着:

BitBake 提供了一种非常易于使用的方式来编写条件元数据。它是通过一种称为覆盖的机制完成的。

OVERRIDES 变量包含以冒号 (:) 分隔的值,每个值都是我们想要满足条件的一项。因此,如果我们有一个以 arm 为条件的变量,并且 arm 在 OVERRIDES 中,那么将使用特定于 arm 的变量版本而不是非条件版本,如下所示:

OVERRIDES = "architecture:os:machine"
TEST = "defaultvalue"
TEST_os = "osspecificvalue"
TEST_other = "othercondvalue"
Run Code Online (Sandbox Code Playgroud)

在这个例子中,TEST将是osspecificvalue由于 os 处于OVERRIDES.

我不清楚从这个解释是如何TEST变得等于osspecificvalue. 有人能解释一下吗?

bitbake yocto

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

在Yocto Bitbake中为自动工具设置python dist-packages路径

我正在尝试为使用自动工具配置Makefile的项目编写一个bitbake文件。

### tizonia.bb
SUMMARY = "Tizonia Library"
DESCRIPTION = "Tizonia"
LICENSE = "LGPL-3.0"
LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"

SRC_URI = "git://github.com/tizonia/tizonia-openmax-il.git;protocol=https"
SRCREV = "9004bc40b89eeafb04b28fbb2b772e47dd62fdc9"

S = "${WORKDIR}/git"

DEPENDS = "python-dev python-setuptools mediainfo log4c python-pip python-soundcloud"

inherit autotools ccache pkgconfig python-dir pythonnative

RDEPENDS_${PN} = "libstdc++ dbus boost libgcc mediainfo log4c libspotify python-pip python-soundcloud"

Run Code Online (Sandbox Code Playgroud)
### python-soundcloud.bb
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=31fa3a9dc818e0087893d63583d2d21a"

SRC_URI[md5sum] = "40c1d32afd019ed11ec1fbee3e84e31f"
SRC_URI[sha256sum] = "aad2003592cec945f835f158f7b41ba8bf805c5738a2fcc5629668ea1df653d5"

DEPENDS = "${PYTHON_PN}-modules"

PYPI_PACKAGE = "soundcloud"

inherit pypi setuptools

RDEPENDS_${PN} = "${PYTHON_PN}-modules"
Run Code Online (Sandbox Code Playgroud)

在调用脚本的do_configure步骤中configure …

python automake autotools bitbake yocto

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

Yocto 在 64 位系统上为 32 位构建了一些配方

我正在尝试在 yocto 中构建一些本地包作为 32 位(实际上是 2.6.1,在 64 位 linux 上)。我的目标根本不使用 multilib。假设我正在构建a需要(所有构建时,静态链接)包b以及 zlib和 的配方libcrypto。通过简单地添加-m32到 gcc 调用,我设法将 a 和 b 构建为 32 位,并且链接/运行工作正常。但是,构建系统不知道它并将所有内容放在work/x86_64-linux.

我必须使用预构建的 32 位 zlib 和 libcrypto 库才能使其工作,因为当我让它 ( DEPENDS_class-native = "b-native zlib-native openssl-native") 时,yocto 当然会尝试给我 64 位版本的 zlib 和 libcrypto ,从而导致链接器错误。让 yocto 在正确的架构中为我构建它们会很好。

我已经尝试过TARGET_ARCHBUILD_ARCH但它要么根本没有将其更改为 32 位,要么给出了它找不到的错误,例如quilt 32 位(应用补丁,这可以/应该使用 64 位被子完成)。

具体的错误由很多

WARNING: a-native-1_0.4-r0 do_prepare_recipe_sysroot: 
Manifest /yoctoroot/work/sstate-control/manifest-i586-quilt-native.populate_sysroot 
not found in i586 (variant '')? …
Run Code Online (Sandbox Code Playgroud)

bitbake yocto

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