.o、.s、.i 这些后缀名的命名通常是历史习惯和文件用途决定的。以下是它们的由来:
⸻
- .o - Object File(目标文件)
• .o 来自 Object file(目标文件)。
• 目标文件是经过编译和汇编后的二进制文件,但还未进行链接,无法直接运行。
• Unix 系统和 GCC 采用 .o 作为目标文件的扩展名,Windows 上常见的是 .obj(Object file)。
⸻
- .s - Assembly File(汇编文件)
• .s 来自 Assembly file(汇编文件)。
• 在 Unix 系统中,汇编语言源文件的标准扩展名是 .s,表示 “Source” 或 “Symbolic assembly language”(符号汇编语言)。
• 这个命名传统源于早期 UNIX 编译器和汇编器,GCC 也沿用了这一惯例。
⸻
- .i - Preprocessed File(预处理文件)
• .i 来自 Intermediate file(中间文件)或 Include-expanded file(包含展开文件)。
• 预处理阶段展开 #include、宏定义 #define 等,因此文件扩展名 .i 表示它是 处理过的中间文件,适用于 C 语言(C++ 预处理文件一般用 .ii)。
• 这种命名方式也是 UNIX 编译工具的历史遗留传统。
⸻
命名规则的起源
• 这些后缀名的使用起源于 Unix 和早期 C 编译器(如 AT&T 的 PCC 和 GCC),后来成为业界标准。
• 这些后缀简短易记,便于编译工具和程序员快速识别文件类型。
⸻
总结
扩展名 含义 由来
.o Object file(目标文件) “Object”(目标)
.s Assembly file(汇编文件) “Source” 或 “Symbolic assembly”
.i Preprocessed file(预处理文件) “Intermediate” 或 “Include-expanded”
所以,这些扩展名的命名是 UNIX 传统、编译流程的需求以及简短易记的原则共同决定的!