gccでarm 32ビットコードをクロスコンパイルするには、どのターゲットフラグを設定する必要がありますか?

gccでarm 32ビットコードをクロスコンパイルするには、どのターゲットフラグを設定する必要がありますか?

一部の32ビットarmデバイス用のクロスコンパイルビルドサーバーを構築しようとしています。アーキテクチャは次のとおりです。 (uname -m から) "armv5tejl" binutils および gcc の宛先を指定する必要があります。 - target = aarch64-linux(例えば)私のユースケースのターゲットフラグは--target = armav5tejl-linuxであると予想するべきですか?それともどのターゲットフラグを使用するのか、どうすればわかりますか?

$で助けを求めてみましたが、gcc --target-help| less 役に立つものはありませんでした。

ベストアンサー1

特にARM v5TEJアーキテクチャを意味armv5tejlします。unameARM926EJ-S CPU

この CPU 用にコンパイルするには、次のようにします。

% /usr/bin/arm-linux-gnueabi-gcc -mcpu=arm926ej-s -o hello hello.c

ライブラリに問題がある可能性があります。 (動的ライブラリを使用せずに)バイナリを静的にコンパイルする必要があるかもしれません。これを使用してください:

% /usr/bin/arm-linux-gnueabi-gcc -static -mcpu=arm926ej-s -o hello hello.c

おすすめ記事