为什么在编译Linux内核和uBoot时arm-linux-gnueabi-gcc而不是arm-none-eabi-gcc?

Jos*_*ese 9 c linux gcc abi u-boot

我有一些编译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

U-Boot 的设计尽可能地反映了 Linux 的设计理念。它使用相同的配置系统、通用目录结构等。它与 Linux 共享一些 API - 请参阅 include/linux 目录。正如上面的评论所提到的,ABI 兼容性此时并不重要,但使用 Linux 编译器在哲学上对于 U-Boot 来说并不是不合适的。