我有一些编译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至少是一个裸机程序,没有花哨的操作系统来解释.这一直困扰着我,但我找不到答案.那里有没有人可以开导我?
解决方法
U-Boot旨在尽可能地反映Linux设计理念.它使用相同的配置系统,通用目录结构等.它与Linux共享一些API – 请参阅include / linux目录.正如上面提到的那样,ABI兼容性在这一点上并不重要,但使用Linux编译器在U-Boot上并不合适.