6

我试图了解如何编译将在我的小猎犬板上运行的程序。我需要编译一些我目前在 fedora 中运行的复杂程序,但了解如何使用 Open Embedded 和 BitBake 却很麻烦。我认为 openembedded 最近发生了一些重大变化,就教程和操作方法而言,我的 OE 安装的目录结构甚至与我在网上其他地方找到的不匹配。

我按照此处的说明设置 OE-Core,它为我提供了以下目录结构:

[user@localhost ~]$ ls oe-core -al
total 52
drwxr-xr-x   9 user user 4096 May 13 13:31 .
drwx------. 31 user user 4096 May 13 12:56 ..
drwxr-xr-x   9 user user 4096 May 10 11:52 bitbake
drwxrwxr-x   8 user user 4096 May 13 13:36 build
drwxr-xr-x   8 user user 4096 May 13 13:33 .git
-rw-r--r--   1 user user  165 May 10 11:51 .gitignore
-rw-r--r--   1 user user  545 May 10 11:51 LICENSE
drwxr-xr-x  21 user user 4096 May 10 11:51 meta
drwxr-xr-x   4 user user 4096 May 10 11:51 meta-hob
drwxr-xr-x   6 user user 4096 May 10 11:51 meta-skeleton
-rwxr-xr-x   1 user user 1592 May 10 11:51 oe-init-build-env
-rw-r--r--   1 user user  495 May 10 11:51 README
drwxr-xr-x   8 user user 4096 May 10 11:51 scripts

我试图把它归结为一个极其简单的开始。如果我能弄清楚如何 BitBake 这个简单的程序,我会在我目前的位置之前取得飞跃式的发展。

#include <stdio.h>

void main(int argc, char* argv[]) {
    printf("Hello World.\r\n");
}

我发现OpenEmbedded 网站太不成熟,没有任何用处。例如,我发现这个页面并没有告诉我哪些文件应该包含显示的内容,并且在某些部分中只标记了“TODO”。

因此,如果有人有使用 BitBake 的经验,一些关于如何交叉编译我的简单程序的指示将非常有帮助。我的食谱文件在哪里?如何使用 bitbake 调用它们?谢谢。

4

2 回答 2

6

我发现 Yocto Project 文档比 OpenEmbedded 文档更新。特别是,我会建议:

我最近创建了一个简单的食谱来测试一些东西,它可能会对你有所帮助。我把配方放在我自己的元层中。在您的示例中,新的元层将位于 oe-core 目录中(在元、元骨架等旁边)。像其他人一样设置元层。配方的目录结构如下所示:

$ ls -al uinput-test/
drwxrwxr-x 2 me me 4096 Apr 24 09:45 files
-rwxr--r-- 1 me me  321 Apr 24 11:33 uinput-test_1.0.bb

源代码 (uinput.c) 位于 files 目录中。然后配方看起来像这样:

DESCRIPTION = "uinput test"
PR = "r0"
LICENSE = "CLOSED"
RM_WORK_EXCLUDE += "uinput-test"

SRC_URI = "file://uinput.c \
          "
do_compile() {
    ${CC} ${CFLAGS} ${LDFLAGS} ${WORKDIR}/uinput.c -o uinput-test
}

do_install() {
    install -m 0755 -d ${D}${bindir}
    install -m 0755 ${S}/uinput-test ${D}${bindir}
}
于 2014-04-25T16:24:01.720 回答
0

我认为检查 Linux Foundation 的Yocto 项目周围的活动可能有助于此类工作。Open Embedded 的维基百科页面是这样说的:

OpenEmbedded-Core 项目(简称 OE-Core)是 Yocto 项目与 OpenEmbedded 合并的产物。 [7] 这是 OpenEmbedded 的最新版本,许多 OE-dev 配方在 OE-Core 中可用。较新版本的包配方只能移植到 OpenEmbedded-Core。

似乎 OpenEmbedded(或后来的 OpenEmbedded-core)经历了相当大的重组,这也许可以解释为什么事情与旧文档不完全匹配。

Yocto 项目文档似乎更加全面和最新。Yocto 项目也显得更加活跃。它得到了大公司(包括英特尔、TI 等)的支持,质量控制似乎得到了投资。这些对我来说似乎是熟悉 Yocto Project 的好理由,即使仍然想坚持使用 OpenEmbedded-core。根据我多年前的记忆,OpenEmbedded-core 的范围似乎比以前要有限得多。

对于更复杂的应用程序开发,您可能会从学习和使用不同的 OE/Yocto 层中受益。

无论如何,Beagle Board 的具体内容,Yocto 项目包括板支持层;德州仪器是 Yocto 项目的成员(请参阅Yocto 项目成员列表)。如果您想为 Beagle Board 构建应用程序,我认为meta-beaglelayer 和/或meta-tilayers 很有用。您可以看到此处列出的重要公共 OE/Yocto 层:

于 2014-03-28T07:08:48.480 回答