如何在Debian上为armv8 cortex-a53安装aarch64工具链?

时间:2016-06-25 05:22:49

标签: gcc arm toolchain

我想在ARM芯片上启动低级编程。我已经安装了qemu并关注了一些hello world类型的示例程序,但现在我想要定位最新的Raspberry Pi,它具有ARMv8 cortex-a53neon-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

通过评论发现,我需要安装aarch64工具链,而不是arm工具链。还是一无所知。

2 个答案:

答案 0 :(得分:4)

从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

答案 1 :(得分:0)

您可以通过以下Github Project试用我最新的针对Raspberry Pi的预构建开源GCC工具链:

此项目摘要:该项目包含UpToDate组的预编译/预构建Raspberry pi GCC交叉和本机编译器二进制文件,可节省大量时间(无需进行任何编译或错误处理)。只需提取,链接并享受您机器中完整的GCC(Raspberry Pi)功能。您可以将其本机编译器用于Raspberry Pi(可以与较早且较慢的6.3.0 GCC一起使用),也可以在任何Linux机器上使用交叉编译器(在最新的Ubuntu / bionic x64上进行了测试)为Raspberry Pi编译程序。所有这些编译器二进制文件都是经过Raspberry Pi硬件优化的,可以提高整体性能。

受支持的GCC版本为:

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

支持的环境:

  • 交叉编译器:当前支持所有Linux发行版(x32 / x64)。
  • 本地编译器:支持带有Raspbian OS的所有Raspberry Pi版本/模型。其他操作系统可能会/可能不会。

希望有帮助! :)