我试图了解我如何编译将在我的小猎犬板上运行的程序。我需要编译一些我目前在 Fedora 中运行的复杂程序,但是理解如何使用 Open Embedded 和 BitBake 已经证明很麻烦。我认为最近 openembedded 发生了一些重大变化,就教程和操作方法而言,我的 OE 安装的目录结构甚至与我在网上其他地方找到的不匹配。
我按照指示here用于设置 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 website太不成熟了,没有任何用处。例如,我发现 this page它没有告诉我哪些文件应该包含显示的内容,并且在某些部分中只标记了“TODO”。
因此,如果有人有使用 BitBake 的经验,那么有关如何交叉编译我的简单程序的一些指示将非常有帮助。我的食谱文件去哪里了?如何使用 bitbake 调用它们?谢谢。
最佳答案
我发现 Yocto 项目文档比 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}
}
关于cross-compiling - 如何使用 bitbake 为 beagleboard 交叉编译这个简单的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16530127/