1

私は間違った質問をしていると思われるので、ここに一連の関連する質問があります。関連する質問は、誰かが私の根本的な誤解が何であるかを識別するのに役立つかもしれません.

私は次のことを経験しました:

bitbake を使用して、さまざまなターゲット アーキテクチャ向けの製品をビルドできる単一のビルド環境を探しています。

これこそが Yocto/OE の聖杯のようです。

最も機能的な x86_64 環境は次のものから得られたようです。

git clone git://git.yoctoproject.org/poky

SDK よりも優れていますが、この環境を別のプラットフォーム用にクロスビルドするにはどうすればよいですか?

git cloneこのような環境と同じくらい機能する SDK はありますか? 動作するビットベイクがあり、さまざまなターゲットのブータブル イメージをクロスビルドできるということですか?

質問:

  • SDK で SDK をビルドできないのはなぜですか? (例: http://downloads.yoctoproject.org/releases/yocto/yocto-2.6/buildtools/ )

    • SDK に bitbake が含まれていないのはなぜですか? (ext SDK はそうしますが、パスに追加するのは好きではありません)。
    • 適切にソースされた env (およびパスに追加された bitbake) を持つ拡張可能な SDK が、SDK 内のものではなく、ディストリビューションでインストールされたビルド ツールを好むように見えるのはなぜですか? (devtool の代わりに bitmake を直接使用する場合)
  • SDK が明らかに特定のマシンまたはアーキテクチャ向けのビルドに関連付けられているのに、明らかに異なるアーキテクチャ向けのクロスビルドができないのはなぜですか? SDK を構築するプロセスでは、最終的なアーキテクチャを事前に指定することさえ望んでいます

私が慣れ親しんでいるのは、ソースがマウントされたある種の pseudo/proot/chroot の下で実行されるクロスツールチェーンを備えた build-sysroot です。

Yocto/bitbake が内部でこれを行っていること、すべてのレシピ キャッシングが優れていること、git clone チェックアウトが強力であること、devtool ワークフローが優れていることを認識していますが、この環境の生成を標準化しようとすると、またはクロスコンパイルします。

(ビルドを特殊化するためにいくつかのローカル conf ファイルを含むターゲット ディレクトリから環境ファイルをソースし、次に bitbake を使用してビルドを作成することを期待しています)

私は何を逃したのですか?- ここまで読んでくれてありがとう;-)

4

2 に答える 2

2

SDK は非常に一般的な単語であるため、yocto のコンテキストでは解釈を誤る可能性があるため、質問は正当です。

Yocto は、完全にカスタムのイメージを構築するための優れたツールであり、オンラインで取得したソースに基づいてすべてのレベル (ブートローダー、カーネル、アプリケーション) で調整できます。yocto で生成できる SDK は、ドキュメントから引用されているとおりです。

標準 SDK は、特定のイメージのコンテンツに合わせて調整されたクロス開発ツールチェーンとライブラリを提供します。

Yocto での私の小さな経験に基づいて、メタ レイヤーを使用して環境を作成およびカスタマイズします。環境がセットアップされたら、SDK を生成して、ターゲット マシン用にアプリケーション プログラムを簡単にクロス コンパイルできます。Yocto ツールは、プロジェクトの適用部分だけに集中する開発者にとっては、あまりにも強力で、重く、複雑すぎます。反対側の SDK はその用途に最適ですが、それを使用してツールチェーンを変更することはできず、使用することしかできません。たとえば、ランタイム ライブラリにバグやパッチを適用する必要がある場合は、SDK を再生成して、この新しいバージョンを開発者に提供する必要があります。

その短い説明で:

SDK よりも優れていますが、この環境を別のプラットフォーム用にクロスビルドするにはどうすればよいですか?

あるプラットフォームから別のプラットフォームに変更するには、Yocto メタ レイヤーをカスタマイズする必要があります。

この git clone された環境と同じくらい機能する SDK はありますか? 動作するビットベイクがあり、さまざまなターゲットのブータブル イメージをクロスビルドできるということですか?

いいえ、そうは思いません

SDK で SDK をビルドできないのはなぜですか?

それは SDK の哲学ではないため、sdk はプログラムをクロス コンパイルするために特定のイメージ用に生成されたツールチェーンであり、それ以上のものではありません。

SDK に bitbake が含まれていないのはなぜですか?

Bitbake は yocto レシピ (つまりメタ レイヤー) を解析するためのツールであるため、SDK にこのツールを含める必要はありません。

SDK が明らかに特定のマシンまたはアーキテクチャ向けのビルドに関連付けられているのに、明らかに異なるアーキテクチャ向けのクロスビルドができないのはなぜですか? SDK を構築するプロセスでは、最終的なアーキテクチャを事前に指定することさえ望んでいます

私はすでにこの質問に答えたと思いますが、あなたの質問の2番目の部分について。少し機敏になり、BSP とアプリケーションの両方を並行して開始することができます。毎週、BSP の新しい変更を含む新しい SDK をリリースし、ツールチェーンは常に開発者にとって最新のものです (これは私が認めている非常に理想的なビジョンです)。

于 2019-03-17T12:17:03.987 に答える