Debian で以前のバージョンの GCC をクロスコンパイルするには?

Debian で以前のバージョンの GCC をクロスコンパイルするには?

x86でARM用GCCツールチェーンの以前のバージョンを構築しようとしています。Cortex-M0用GCC > v5のバグ。私は次のガイドラインを組み合わせて従いました。

だから私の全体的なプロセスは次のとおりです。

# Download GCC-5.5.0 from https://gcc.gnu.org/releases.html
VERSION="5.5.0"
tar xzf gcc-$VERSION.tar.gz
cd gcc-$VERSION
./contrib/download_prerequisites
cd ..
mkdir objdir
cd objdir
../gcc-5.5.0/configure --prefix=$HOME/embedded/gcc-arm-none-eabi-5.5.0 --disable-multilib --enable-languages=c,c++ --target=arm-none-eabi
make -j$(nproc) # use all cores
make install

次に、以下に次のファイルを作成します~/embedded/arm-none-eabi-5.5.0/bin/

arm-none-eabi-c++  arm-none-eabi-gcc-5.5.0   arm-none-eabi-gcov
arm-none-eabi-cpp  arm-none-eabi-gcc-ar      arm-none-eabi-gcov-dump
arm-none-eabi-g++  arm-none-eabi-gcc-nm      arm-none-eabi-gcov-tool
arm-none-eabi-gcc  arm-none-eabi-gcc-ranlib

ただし、次のコマンドは失敗します。

arm-none-eabi-gcc -c -mcpu=cortex-m0 -O0 -ggdb (......)

Compiling crt0_v6m.S
as: unrecognized option '-mcpu=cortex-m0'
make: *** [/home/ceremcem/ChibiOS/os/common/startup/ARMCMx/compilers/GCC/rules.mk:253: build/obj/crt0_v6m.o] Error 1

コマンドが新しく生成されたバイナリを使用していることを確認できます。

$ which arm-none-eabi-gcc
/home/ceremcem/embedded/arm-none-eabi-5.5.0/bin//arm-none-eabi-gcc

これは、新しくコンパイルされたGCCツールチェーンがこのmcpuオプションを受け入れないことを意味します。-mcpu=cortex-m0オプションが失敗するGCCツールチェーンのビルド段階で何が間違っている可能性がありますか?

ベストアンサー1

あなたのGCCはrightを使用していないようで、おそらく追加しないasでしょう。ld

--with-as=/usr/bin/arm-none-eabi-as --with-ld=/usr/bin/arm-none-eabi-ld

あなたの行に./configure

GCC 5で直接サポートされていないDebianのマルチアーキテクチャアプローチに関連する問題も発生する可能性があります。最良の方法はダウンロードすることですGCC 5.5用の最後のDebianパッケージソースコード形式で作成し、それを(パッチと共に)使用してクロスコンパイラを構築します。次に、インストールされたGCC間パッケージの依存関係としてインストールされたARM Cライブラリを使用します。

dget https://snapshot.debian.org/archive/debian-debug/20180412T094604Z/pool/main/g/gcc-5/gcc-5_5.5.0-12.dsc
cd gcc-5-5.5.0
debian/rules patch

次に、前のように構成してビルドします。 (クロスビルド文書は無視されますdebian/README.cross。)

おすすめ記事