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)以及所有其他必需的东西。 gcc
和g++
的区别在于后者包含一个额外的库( libstdc++
)。
根据它们被调用的文件类型,它们可能会省略一些步骤或以不同的方式做事。 例如,对于.o
文件,它不需要运行编译器或预处理程序。
如果你传递-###
给他们,你可以看到它打印了它在执行的每一步中调用的工具。
采取从这个小GCC指南:
根据您为您的程序提供的文件扩展名,它会选择它需要运行的相应命令,将您输入的源代码转换为您指定的输出文件。
有一个很好的GCC确切的小流程图,取决于文件扩展名:
input extensions runs if output
它发送链接到ld。
另请参阅:如何获得GCC链接器命令?
链接地址: http://www.djcxy.com/p/85749.html