使用 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 位的。
安装过程([=33=] 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.
我正在学习 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 位的。
安装过程([=33=] 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.