使用aarch64-none而不是aarch64-elf会产生裸金属的任何好处吗?

时间:2018-04-10 23:16:14

标签: cross-compiling raspberry-pi3 arm64 bare-metal

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

这个Rpi 3教程的好处是

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

凭借我的表面层次理解,我知道aarch64-elf将构建一个可由使用ELF文件格式的操作系统加载的“二进制”,例如任何基于Unix的(Linux,OSX)。

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

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

如果你看一下make文件的line 40,他仍然会做objcopy,我认为无论如何都会删除任何与ELF相关的信息,对吗? / p>

所以我的问题是:在每个例子中,通过并将其Makefiles更改为aarch64-none是否值得?不幸的是,他们也没有很好地把它作为一个参数!

裸金属到aarch64-none时是否还有其他好处?无论如何我仍然必须做objcopy,对吗?

1 个答案:

答案 0 :(得分:2)

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

1)我还是要做objcopy吗? <登记/> 是的。
2)在裸机到aarch64-none时有没有额外的好处?
没有我会注意到。例如,ARM Trusted Firmware和u-boot正在编译aarch64-elf 3)在每个示例中,是否值得通过并将其Makefile更改为aarch64-none?
我会说不是。我宁愿建议从here下载并安装Linaro aarch64-elf工具链:
如果您的编译系统运行的是32位版本的Linux,则下载gcc-linaro-7.2.1-2017.11-i686_aarch64-elf.tar.xz;如果运行64位版本,则下载gcc-linaro-7.2.1-2017.11-x86_64_aarch64-elf.tar.xz

安装程序(x86_64 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.