当我在CodeBlocks中设置一个新项目和特定C
作为语言时,它将g++
用作链接。
内部设置有:
Linker for Dynamic libs : g++
gcc
和g++
作为链接器有什么区别?
当gcc语言前端( gcc
, g++
, gfortran
等(调用链接将委派给系统链接器ld
,将默默地传递到链接器语言的样板选项与该前端相关联(C
,C++
,Fortran
等(。
这些样板选项由构建器确定工具链(通常是您的发行版(。显着差异是在链接不同的标准库之间语言。您可以通过指示全面检查差异从链接器请求详细模式的前端:通过-Wl,-v
。
为什么默认情况下code :: blocks使用g++
作为链接器,即使对于C语言项目?这是最简单的默认值:生成的链接选项将起作用当然,仅供C 项目;他们也将专门工作C语言项目(尽管有一些冗余(,并且它们也将用于混合C/C 语言项目。
如果您在C中进行编程,而不是全部在C 中进行编程,则此决定确实存在缺陷因此,在经济上已安装了gcc
,但在您的g++
上没有系统。然后,您会发现您的代码范围内:: Blocks C Projects无法链接因为您没有默认的链接器。但是你可以解决这个问题通过更改动态libs 从 g++
更改链接器,将其更改为gcc
在工具链的全局编译器设置中。
嗯,GCC专为C 设计用于C 。区别与默认链接的库有关(例如,GCC更喜欢C实现(。
有关更多信息,请参阅此信息。