g ++既是c ++编译器又是链接器?

我正在查看Eclipse中构建的输出。 我正在交叉编译ColdFire处理器。 编译线如下所示:

m68k-elf-g++ -O2 -falign-functions=4 -IC:nburninclude -IC:nburnMOD52...

其次是更多的包含文件,明显的“编译器”标志,最后是我更改的源文件。 下一行再次调用相同的工具:

m68k-elf-g++ srcmain.o srcTouchPanelMediator.o srcStartup.o....

其次是更多.o文件一些.ld文件和一些.a文件。 这似乎将所有不同类型的目标文件链接在一起。

在Gnu系列中,g ++是一些可以根据参数确定是否需要编译或链接的超级应用程序? 它有内置的两种功能,还是只是调度编译到gcc和链接到ld,我的日志只是没有显示?


g++gcc是驱动程序。 通常,他们运行预处理器( cpp ),适当的编译器(用于C ++的cc1plus和用于C的cc1 )以及链接器(gold或GNU ld)以及所有其他必需的东西。 gccg++的区别在于后者包含一个额外的库( libstdc++ )。

根据它们被调用的文件类型,它们可能会省略一些步骤或以不同的方式做事。 例如,对于.o文件,它不需要运行编译器或预处理程序。

如果你传递-###给他们,你可以看到它打印了它在执行的每一步中调用的工具。


采取从这个小GCC指南:

根据您为您的程序提供的文件扩展名,它会选择它需要运行的相应命令,将您输入的源代码转换为您指定的输出文件。

有一个很好的GCC确切的小流程图,取决于文件扩展名:

input extensions      runs     if   output  


它发送链接到ld。

另请参阅:如何获得GCC链接器命令?

链接地址: http://www.djcxy.com/p/85749.html

上一篇: Is g++ both a c++ compiler and a linker?

下一篇: How to compile a c++ program in Linux?