我正在关注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
,对吗?
答案 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.