当我在CodeBlocks中设置一个新项目并将特定C
设置为语言时,它使用g++
作为链接器。
内部设置有:
Linker for Dynamic libs : g++
作为链接器的gcc
和g++
之间有什么区别?
答案 0 :(得分:1)
任何GCC语言前端(gcc
,g++
,gfortran
等),
为链接调用将委托给系统链接器ld
,并且将会
静默地向链接器传递语言的样板选项
与该前端相关联(C
,C++
,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。