ARM のクロス コンパイラとして使用するために clang をコンパイルしましたが (で構成することにより./configure --target=armv7l-unknown-linux-gnueabihf
)、C コードをコンパイルしようとすると、/usr/bin/as
. すでに ARM 用にコンパイルされた binutils があり、それらは別のディレクトリにあります。指定したアセンブラを使用するように clang (または llvm) に指示するにはどうすればよいですか?
2 に答える
configure に --host オプションを渡してみてください。これにより、すべての cc ar などのユーティリティの前に armv7l-unknown-linux-gnueabihf- が付きます。例:
./configure --host=armv7l-unknown-linux-gnueabihf --build=i686-unknown-linux-gnu
configure を autotools で使用しているので、次を参照してください: automake クロスコンパイル
私は常に ./configure を使用してソース ディレクトリから構成するのに問題があり、最終的にあきらめました。最近では、常に別のディレクトリ、つまり ..//configure から構成しますが、構成には絶対パスを使用することをお勧めします。
ARM binutils は、clang に使用しているのと同じプレフィックスにインストールする必要があります。また、clang を構成およびビルドするときに、それらがパスにあることを確認してください。つまり、PATH=/some/prefix/bin:$PATH; です。/configure --target=armv7l-unknown-linux-gnueabihf. パッケージ化の目的でそれらを別々のディレクトリに保持している場合は、 make install DESTDIR= が役立ちます。
私は通常、 clangをビルドしませんが、devkitARM に使用するビルドスクリプトが役立つ場合があります。