区别gcc和g ++作为链接器?

时间:2017-04-27 22:54:57

标签: gcc g++ codeblocks

当我在CodeBlocks中设置一个新项目并将特定C设置为语言时,它使用g++作为链接器。

内部设置有:

Linker for Dynamic libs : g++

作为链接器的gccg++之间有什么区别?

2 个答案:

答案 0 :(得分:1)

任何GCC语言前端(gccg++gfortran等), 为链接调用将委托给系统链接器ld,并且将会 静默地向链接器传递语言的样板选项 与该前端相关联(CC++Fortran等)。

这些样板选项是由构建器决定的 工具链(通常是你的发行版)。显着的区别是 在为不同的链接的标准库之间 语言。您可以通过指导来完整地检查差异 前端从链接器请求详细模式:传递-Wl,-v

为什么Code :: Blocks默认使用g++作为链接器,即使对于C语言也是如此 项目?这是最简单的默认值:生成的链接选项将起作用 当然,只用于C ++项目;他们专门工作 C语言项目(尽管有一些冗余),它们也适用于混合C / C ++语言项目。

如果您使用C编程而不是全部使用C ++编写,那么此决定确实存在缺陷 因此,经济地安装了gcc而不是g++ 系统。然后你会发现开箱即用的Code :: Blocks C项目无法链接 因为你没有默认的链接器。但你可以解决这个问题 通过将动态库的链接器g++更改为gcc来实现一臂之力 在工具链的全局编译器设置中。

答案 1 :(得分:0)

嗯,GCC是为C而设计的,G ++是为C ++设计的。不同之处在于它们默认链接的库(例如,GCC会更喜欢C实现)。

有关详细信息,请参阅this