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

Difference gcc and g++ as linker?

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

内部设置有:

Linker for Dynamic libs : g++

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

好吧,GCC 是为 C 而设计的,而 G++ 是为 C++ 而设计的。区别在于默认情况下它们 link 的库(例如,GCC 更喜欢 C 实现)。

有关详细信息,请参阅 this

任何 GCC 语言前端(gccg++gfortran 等),当 为 linkage 调用将委托给系统 linker,ld,并将 默默地将语言的样板选项传递给 linker 与该前端关联(CC++Fortran 等)。

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

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

如果你用 C 编程而不是全部用 C++,这个决定确实有缺陷 因此 - 经济地 - 安装了 gcc 而不是 g++ 系统。然后你会发现开箱即用的 Code::Blocks C 项目不能 link 因为你没有得到默认的 linker。但你可以解决这个问题 将 动态库链接器 g++ 更改为 gcc 在工具链的全局编译器设置中。