ARMチップで低レベルのプログラミングを開始したいと思います。qemuをインストールし、hello worldタイプのもののいくつかのサンプルプログラムに従いましたが、最新のRaspberryPiをターゲットにします。 ARMv8 cortex-a53
およびneon-fp-armv8
FPUがあります。現在Debianを実行しています。
$ lsb_release -a
No LSB modules are available.
Distributor ID: BunsenLabs
Description: BunsenLabs GNU/Linux 8.5 (Hydrogen)
Release: 8.5
Codename: bunsen-hydrogen
$ cat /etc/debian_version
8.5
現在、次のツールチェーンをインストールしています。
binutils-arm-none-eabi
gcc-arm-none-eabi
gdb-arm-none-eabi
ただし、-mcpu=cortex-a53
を使用してコンパイルしようとすると、次のエラーが発生します。
arm-none-eabi-gcc: error: unrecognized argument in option '-mcpu=cortex-a53'
$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (4.8.4-1+11-1) 4.8.4 20141219 (release)
そのターゲットCPUを含まない古いGCCがあると想定したため、binutils、gcc、およびgdbのソースをダウンロードしようとしましたが、binutilsをビルドできません。 make all
しようとすると、常に失敗します。
binutils構成:
$../../src/binutils-2.26.51/configure \
--target=arm-none-eabi \
--disable-nls
ビルドエラー:
$make -j4
checking for bison... /home/nathan/development/tools/arm/src/binutils-2.26.51/missing bison -y
checking for flex... /home/nathan/development/tools/arm/src/binutils-2.26.51/missing flex
checking Lex output file root... configure: error: cannot find output from /home/nathan/development/tools/arm/src/binutils-2.26.51/missing flex; giving up
Makefile:3545: recipe for target 'configure-binutils' failed
make[1]: *** [configure-binutils] Error 1
no
checking for bison... /home/nathan/development/tools/arm/src/binutils-2.26.51/missing bison -y
checking for flex... /home/nathan/development/tools/arm/src/binutils-2.26.51/missing flex
checking Lex output file root... configure: error: cannot find output from /home/nathan/development/tools/arm/src/binutils-2.26.51/missing flex; giving up
Makefile:4834: recipe for target 'configure-gas' failed
make[1]: *** [configure-gas] Error 1
make[1]: Leaving directory '/home/nathan/development/tools/arm/build/binutils-2.26.51'
Makefile:844: recipe for target 'all' failed
make: *** [all] Error 2
Aarch64 cortex-a53
アーキテクチャ用にコンパイルするツールチェーンセットアップを取得するために必要な適切な手順は何ですか?
編集1
コメントから発見されたので、armツールチェーンではなくaarch64ツールチェーンをインストールする必要があります。まだ無知。
Ubuntu 18.04以降、次のことができます。
Sudo apt-get install gcc-aarch64-linux-gnu
aarch64-linux-gnu-gcc -mcpu=cortex-a53 hello_world.c
パッケージgcc-aarch64-linux-gnu
のバージョンは4:7.3.0-3ubuntu2
です。
ただし、Raspberry Piの場合は、公式バイナリを https://github.com/raspberrypi/tools からダウンロードする必要があります。これは、次の説明で説明されているように、より信頼性の高い方法です。 https ://raspberrypi.stackexchange.com/questions/64273/installing-raspberry-pi-cross-compiler/83215#83215
最後に、ベアメタルの場合、arm-none-eabi-gcc
の類似物を見つけることができませんでした。なぜだろうか: https://askubuntu.com/questions/1049249/is-there-a-package-with -the-aarch64-version-of-gcc-arm-none-eabi-for-bare-metal
このプロジェクトの概要:このプロジェクトには、プリコンパイル済み/プリビルド済みのRaspberry Pi GCCクロスおよびネイティブコンパイラバイナリのUpToDateセットが含まれており、時間を大幅に節約できます(いいえコンパイルまたはエラー処理が必要です)。マシンで完全なGCC(Raspberry Pi)機能を抽出、リンク、お楽しみください。 Raspberry Pi用のネイティブコンパイラ(古くて遅い6.3.0 GCCと一緒に使用できます)を使用するか、任意のLinuxマシン(最新のUbuntu/bionic x64でテスト済み)でクロスコンパイラを使用して、RaspberryPi用のプログラムをコンパイルできます。 。これらのコンパイラバイナリはすべて、全体的なパフォーマンスを向上させるために最適化されたRaspberryPiハードウェアです。
サポートされているGCCバージョンは次のとおりです:
サポートされる環境:
お役に立てば幸いです。 :)