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
。)