在对编译器及其工作原理进行了一些研究后,我了解到该过程通常分为 4 个步骤:预处理器、编译器、汇编器和链接器。我设想这些步骤的方式是每个步骤都是它自己的单独程序。预处理程序、编译程序、汇编程序和链接程序。但是,您了解到有时创建汇编代码和生成目标文件的过程全部由编译器程序处理,有时则不是。它似乎在很大程度上取决于所使用的上下文和编程语言。那么我的问题是如何分解将 C++ 源代码翻译成机器代码的典型翻译过程?
- 预处理器是独立于编译器的程序吗?还是该过程通常是编译器程序的一部分?
- 编译器通常负责什么?生成汇编代码然后转换为机器代码?
- 链接器是编译器完成后运行的独立程序吗?
旁注:我的问题与其他 C++ 编译器线程不同,因为我不仅要问编译器是如何工作的,还要问某些其他进程(例如链接)是否有自己的可执行程序,或者它们是否通常内置于编译器程序中。