使用 aarch64-none 而不是 aarch64-elf 会在 Bare Metal 中产生任何好处吗?

Will using aarch64-none instead of aarch64-elf yield any benefit in Bare Metal?

我正在学习 Rpi 3 bare metal 教程。我花了很多时间在 Rpi A+ 和零的裸机上,使用 Dave Welche 的优秀回购和其他来源。

这个 Rpi 3 教程的伟大之处在于

1) it's 64 bit
2) it's multi core 

根据我的表面理解,我知道 aarch64-elf 将构建一个 "binary" 可由使用 ELF 文件格式的 OS 加载,例如任何基于 Unix 的(Linux, OSX).

aarch64-none 用于裸机,这意味着它不会在生成的二进制文件中创建任何 OS 加载程序信息。

令人困惑的是 Rpi 3 tutorial 将他们的工具链构建为 aarch64-elf

如果你查看 make 文件的 line 40,他最终还是做了一个 objcopy,我 认为 会删除任何 ELF 相关信息无论如何,正确吗?

所以我的问题是:是否值得在每个示例中检查并将其 Makefile 更改为 aarch64-none?不幸的是,他们也没有做好将其设为参数的工作!

aarch64-none 相比,在裸机中有什么额外的好处吗?无论如何,我仍然需要做 objcopy,对吗?

我以不同的顺序回答你的问题,因为有些答案对其他人有直接影响。

1) 我仍然需要做 objcopy ?
是的
2) 在裸机中对 aarch64-none 有什么额外的好处吗?
None我会知道的。例如,ARM Trusted Firmware 和 u-boot 使用 aarch64-elf 可以正常编译。
3) 是否值得在每个示例中检查并将其 Makefile 更改为 aarch64-none?
我会说不是。我宁愿建议从 here:
下载并安装 Linaro aarch64-elf 工具链 下载 gcc-linaro-7.2.1-2017.11-i686_aarch64-elf.tar.xz if your compiling system is running a 32 bits version of Linux, and gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf.tar.xz 如果它是 运行 64 位的。

安装过程([=3​​3=] Linux):

mkdir -p /opt/linaro
wget https://releases.linaro.org/components/toolchain/binaries/latest/aarch64-elf/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf.tar.xz
tar Jxf gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf.tar.xz -C /opt/linaro
export PATH=/opt/linaro/gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf/bin:$PATH

aarch64-elf-gcc  --version
aarch64-elf-gcc (Linaro GCC 7.2-2017.11) 7.2.1 20171011
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.