0 问题由来
以前也用过C51写过简单的裸机程序,但是并没有认真的考虑过其与Linux环境下一般C语言程序的不同,只是想当然地认为C是跨平台的语言,并没有考虑过C语言的标准问题。
今天在编译GCC交叉编译器时,遇到了种种问题,不得不重新考虑C语言的实现标准,否则很难清晰的了解交叉编译器的编译过程。
1 C编译器的两种实现要求
C语言标准的正式文档中明确提出了C编译器的两种实现标准:
1.1 conforming freestanding implementation
所谓的Freestanding,C编译器只需提供C语言语句的编译,外加
<float.h>
<limits.h>
<stdarg.h>
<stdint.h>
<stdalign.h>
<stdnoreturn.h>