g ++和gcc有什么区别? 哪些应该用于一般的c ++开发?
#1楼
“GCC”是GNU Compiler Collection的常用简写术语。 这是编译器的最通用名称,以及强调编译C程序时使用的名称(缩写以前代表“GNU C编译器”)。
在引用C ++编译时,通常调用编译器“G ++”。 由于只有一个编译器,无论语言环境如何,将其称为“GCC”也是准确的; 但是,当重点是编译C ++程序时,术语“G ++”更有用。
你可以在这里阅读更多。
#2楼
gcc
和g++
是GNU Compiler Collection的编译器驱动程序(曾经只是GNU C编译器 )。
即使它们根据文件类型自动确定调用哪些后端( cc1
cc1plus
...),除非用-x language
覆盖,否则它们会有一些差异。
默认情况下可能最重要的区别是它们自动链接的库。
根据GCC的在线文档链接选项以及如何调用 g++
, g++
等同于gcc -xc++ -lstdc++ -shared-libgcc
(第一个是编译器选项,第二个是链接器选项)。 这可以通过使用-v
选项运行来检查(它显示正在运行的后端工具链命令)。
#3楼
对于c ++,你应该使用g ++。
它是相同的编译器(例如GNU编译器集合)。 GCC或G ++只选择具有不同默认选项的不同前端。
简而言之:如果使用g ++,前端会告诉链接器您可能希望链接到C ++标准库。 gcc前端不会这样做(如果传递正确的命令行选项,它也可以与它们链接)。
#4楼
唯一值得注意的区别是,如果将.c
传递给gcc,它将编译为C,而g ++将始终将其视为C ++。
#5楼
虽然gcc和g ++命令做的事情很相似,但g ++被设计成你调用编译C ++程序的命令。 它旨在自动做正确的事情。
在幕后,他们真的是同一个节目。 据我所知,两者都决定是根据文件扩展名将程序编译为C还是C ++。 两者都能够链接到C ++标准库,但只有g ++默认执行此操作。 因此,如果您有一个用C ++编写的程序,并不需要链接到标准库,那么gcc就会做正确的事情; 但是,g ++也是如此。 因此,没有理由不使用g ++进行一般的C ++开发。