“g ++”和“c ++”编译器

“g++” and “c++” compiler

我刚刚在我的Ubuntu上发现,有两种不同的C++编译器:/Ur/bin /g++和/ur/bin /c++。我不熟悉后者,但人C++只是跳转到GCC的主页。我想知道它们作为C++编译器的区别是什么?

谢谢和问候!


这是典型的Ubuntu符号链接混乱。

如果您使用cx1(3),您将看到它实际上是一个符号链接。到:

1
/etc/alternatives/c++

反过来,它也是一个符号链接:

1
/usr/bin/g++

因此,在Ubuntu系统上,C++是G++。链接间接性背后的推理是,有多个包可以提供C++编译器(例如G+的不同版本)。在Ubuntu上你会看到很多。例如,qmake是指向/etc/alternations中的文件的链接,它(在我的系统中)是指向/usr/bin/qmake-qt3的链接。


c++是系统上c++编译器的标准名称。

在GNU系统上,几乎可以肯定安装了EDOCX1(GNU编译器集合),其中包括一个名为g++(GNU的"g")的c++编译器。但是为了与POSIX兼容,他们将此编译器安装为c++,有时c++是到g++的符号链接,有时是硬链接,有时只是安装了两次的同一个文件。

对于其他系统,如FreeBSD或NetBSD,情况可能不同。这些系统可能没有安装GCC(和其他GNU工具)。

在我的系统中,这两个文件完全相同:

1
2
3
% diff `which c++` `which g++`
% echo $?
0

这意味着c++至少调用同一个编译器,但理论上它可以不同地解释某些命令行选项或具有不同的默认值。有更多知识的人可以在这方面扩展答案。


在我的机器上,c++是一个链接:

1
2
3
4
$ readlink /usr/bin/c++
/etc/alternatives/c++
$ readlink /etc/alternatives/c++
/usr/bin/g++

所以c++只是一个到g++的链接。


G++是GNU C++编译器,其中C++是系统C++编译器,在Ubuntu C++中是G+的一个链接,然而在另一个系统中,它很可能是一个非GCC编译器的链接。就像其他人说的那样。仅仅因为系统上存在一个到vi的链接并不意味着它的vim可以是任何vi克隆。