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 Web サイトは未熟すぎて役に立たないことがわかりました。たとえば、このページでは、表示されているコンテンツをどのファイルに含める必要があるかが示されておらず、一部のセクションで「TODO」とマークされているだけです。

したがって、BitBake を使用した経験がある場合は、私の簡単なプログラムをクロスコンパイルする方法に関するいくつかの指針が非常に役立ちます。レシピ ファイルはどこに保存されますか? bitbake でそれらを呼び出すにはどうすればよいですか? ありがとう。

4

2 に答える 2

6

Yocto Project のドキュメントは、OpenEmbedded のドキュメントよりも最新であることがわかりました。特に、次のことをお勧めします。

私は最近、何かをテストするための簡単なレシピを作成しました。レシピを自分のメタレイヤーに入れました。あなたの例では、新しいメタ レイヤーは oe-core ディレクトリにあります (meta、meta-skeleton などの隣)。メタ レイヤーを他のレイヤーと同様にセットアップします。レシピのディレクトリ構造は次のようになります。

$ 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 に答える