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