我找不到翻译单元,编译单元,目标文件,可执行文件之间的区别......在很多地方我都看到过使用了一个而不是其他的.
我知道这些文件是在C++程序编译和链接期间生成的.任何人都可以列出在这些过程中生成的所有文件并指定它们之间的差异吗?
翻译单元与编译单元相同(因此您的源和它包含的所有头文件)
在典型情况下,目标文件是编译编译单元的结果.
可执行文件是链接项目的目标文件以及运行时库函数的结果.
编译期间实际生成的文件究竟取决于编译器,但大多数现代编译器只会读取源文件和头文件,然后生成目标文件,如果只有一个源文件,则直接传递给链接器.这会生成可执行文件.
较旧的编译器将"预处理"作为单独的步骤,因此您最终将所有编译单元放在临时文件中.类似地,在过去,代替在目标文件中生成机器代码,汇编程序代码将由编译器输出,然后通过汇编程序汇编,这将生成目标文件.链接仍然类似.
请注意,这只是练习,C或C++标准中没有关于可执行文件或目标文件的任何内容.由编译器实现以他们喜欢的任何方式解决这些问题.