cross-compiling - 如何使用 bitbake 为 beagleboard 交叉编译这个简单的程序?

标签 cross-compiling beagleboard bitbake

我试图了解我如何编译将在我的小猎犬板上运行的程序。我需要编译一些我目前在 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 文档更新。我特别推荐:

  • Quick Start Guide
  • App Developer's Guide
  • Reference Manual

  • 我最近创建了一个简单的配方来测试一些东西,它可能对你有帮助。我把配方放在我自己的元层中。在您的示例中,新的元层将位于 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/

    相关文章:

    go - 如何将 go-cross 添加到 Yocto SDK?或者在其他机器上为 Yocto 编译 Go?

    c++ - 在 AVX 上使用 AVX2/AVX512 内在函数编译 C++ 代码

    linux - 如何使Linux Docker镜像文件系统不区分大小写?

    openembedded - 我如何在食谱中重新排序 bitbake 任务

    linux - buildroot rootfs 可以使用 opkg 安装 angstrom 包吗?

    linux - 在 Beaglebone 上安装 git 和配置 github 时出现 SSL/https 错误

    GitLab CI Yocto Build - 如何使用 SSTATE 和 DL_DIR

    c++ - 从 Linux 到 Windows 交叉编译 wxWidgets 代码

    node.js - npm -v 和 node.js 在交叉编译的 nodejs0.12.2 上抛出非法指令

    c - gcc 链接器找不到 .so 库文件