2

テストケースなどを実行するために、ビルドルート環境の一部をホスト システム (/usr/bin/gcc など) 用にコンパイルしたいと考えています。

/usr で external_toolchain を指定しようとしましたが、失敗します。誰かがこのようなことをすることができましたか?

buildroot のマニュアルには、rootfs にインポートできないため、これはサポートされていないと書かれています。ただし、テストケースの場合、rootfs は必要ありません。

4

2 に答える 2

2

ええ、残念ながら、これを行うことはできません。Buildroot で有用であるためには、ツールチェーンは「純粋な」ツールチェーンでなければなりません。つまり、C ライブラリのバイナリとヘッダーのみを含んでいる必要があります。あなたの /usr は、ホスト マシンから膨大な量のライブラリで散らかっています。Buildroot はツールチェーン sysroot (あなたの場合は /usr) の完全なコピーを作成するため、非常に多くのものをコピーします。

したがって、これは私たちがサポートするものではありませんし、サポートするつもりもありません。x86 または x86_64 クロス コンパイラを使用してプログラムをビルドし、Buildroot で最小限の Linux システムを生成し、開発用 PC で直接 chroot することもできます。

于 2012-06-18T13:38:21.340 に答える
0

現在のドキュメントでも、これが不可能であることを説明しているようですhttps://github.com/buildroot/buildroot/blob/2018.08/docs/manual/configure.txt#L198

また、ターゲット用のソフトウェアをビルドするためのツールチェーンとして、ディストリビューション ツールチェーン (つまり、ディストリビューションによってインストールされた gcc/binutils/C ライブラリ) を使用することもサポートしていません。これは、配布ツールチェーンが「純粋な」ツールチェーン (つまり、C/C++ ライブラリのみ) ではないため、Buildroot ビルド環境に適切にインポートできないためです。したがって、x86 または x86_64 ターゲット用のシステムを構築している場合でも、Buildroot または crosstool-NG を使用してクロス コンパイル ツールチェーンを生成する必要があります。

さらに、現在の Buildroot は、ツールチェーン パスがグローバル ツールチェーンであるかどうかをチェックするようであり、https://github.com/buildroot/buildroot/blob/2018.08/toolchain/helpers.mk#L395である場合は自動的に救済されます。

with_sysroot=`$${__CROSS_CC} -v 2>&1 |sed -r -e '/.* --with-sysroot=([^[:space:]]+)[[:space:]].*/!d; s//\1/'`; \
if test "$${with_sysroot}"  = "/" ; then \
    echo "Distribution toolchains are unsuitable for use by Buildroot," ; \
    echo "as they were configured in a way that makes them non-relocatable,"; \
    echo "and contain a lot of pre-built libraries that would conflict with"; \
    echo "the ones Buildroot wants to build."; \
    exit 1; \
fi; \
于 2019-02-21T09:51:34.823 に答える