提问人:Joshua DeWeese 提问时间:11/8/2015 最后编辑:Darren NgJoshua DeWeese 更新时间:5/6/2021 访问量:2112
为什么在编译 Linux 内核和 uBoot 时使用 arm-linux-gnueabi-gcc 而不是 arm-none-eabi-gcc?
Why arm-linux-gnueabi-gcc and not arm-none-eabi-gcc when compiling Linux kernel and uBoot?
问:
我在为 ARM cortex-m 设备以及 Linux 内核、uBoot 和 Beaglebone Black (BBB) 应用程序编译裸机代码方面有一些经验(对于生活在岩石下的人来说,具有更多功能的 ARM 和 MMU)。对我来说,cortex-m 代码应该使用 arm-none-eabi-gcc(因为没有操作系统)进行编译,而 BBB 的应用程序代码应该使用 arm-linux-gnueabi-gcc 进行编译(因为有一个操作系统,可以进行系统调用,可以使用程序加载器和共享对象)。
我不明白的是为什么 uBoot 和内核也应该使用 arm-linux-gnueabi-gcc 进行编译。在我看来,至少uBoot是一个裸机程序,没有花哨的操作系统。这已经困扰了我一段时间,但我找不到答案。有没有人能启发我?
答:
-2赞
John Moon
11/17/2017
#1
U-Boot 旨在尽可能地反映 Linux 的设计理念。它使用相同的配置系统、通用目录结构等。它与 Linux 共享一些 API - 请参阅 include/linux 目录。正如上面的评论所提到的,在这一点上,ABI兼容性并不重要,但是使用Linux编译器在哲学上并不适合U-Boot。
评论