我正在阅读 C 中的库,但我还没有找到关于什么是目标文件的解释。任何其他编译文件和目标文件之间的真正区别是什么? 如果有人能用人类语言解释,我会很高兴。
目标文件是编译阶段的真实输出。它主要是机器代码,但具有允许链接器查看其中的符号以及工作所需的符号的信息。(作为参考,“符号”基本上是全局对象、函数等的名称)
链接器获取所有这些目标文件并将它们组合成一个可执行文件(假设它可以,即:没有任何重复或未定义的符号)。如果您不告诉他们使用命令行选项“仅编译”,许多编译器将为您执行此操作(阅读:他们自己运行链接器)。(-c是一个常见的“只编译;不链接”选项。)
-c