web-dev-qa-db-ja.com

Debianにarmv8cortex-a53用のaarch64ツールチェーンをインストールするにはどうすればよいですか?

ARMチップで低レベルのプログラミングを開始したいと思います。qemuをインストールし、hello worldタイプのもののいくつかのサンプルプログラムに従いましたが、最新のRaspberryPiをターゲットにします。 ARMv8 cortex-a53およびneon-fp-armv8FPUがあります。現在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ツールチェーンをインストールする必要があります。まだ無知。

7
nathansizemore

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ツールチェーンを試すことができます Githubプロジェクト

このプロジェクトの概要:このプロジェクトには、プリコンパイル済み/プリビルド済みのRaspberry Pi GCCクロスおよびネイティブコンパイラバイナリのUpToDateセットが含まれており、時間を大幅に節約できます(いいえコンパイルまたはエラー処理が必要です)。マシンで完全なGCC(Raspberry Pi)機能を抽出、リンク、お楽しみください。 Raspberry Pi用のネイティブコンパイラ(古くて遅い6.3.0 GCCと一緒に使用できます)を使用するか、任意のLinuxマシン(最新のUbuntu/bionic x64でテスト済み)でクロスコンパイラを使用して、RaspberryPi用のプログラムをコンパイルできます。 。これらのコンパイラバイナリはすべて、全体的なパフォーマンスを向上させるために最適化されたRaspberryPiハードウェアです。

サポートされているGCCバージョンは次のとおりです:

  • GCC 6.3.0
  • GCC 7.4.0
  • GCC 8.2.0
  • GCC 8.3.0

サポートされる環境:

  • クロスコンパイラ:すべてのLinuxディストリビューション(x32/x64)が現在サポートされています。
  • Native-Compiler:RaspbianOSを搭載したすべてのRaspberryPiバージョン/モデルがサポートされています。他のOSは動作する場合と動作しない場合があります。

お役に立てば幸いです。 :)

0
abhiTronix