“g ++”和“c ++”编译器
我在我的Ubuntu上发现,有两种不同的C ++编译器:/ usr / bin / g ++和/ usr / bin / c ++。 我不熟悉后者,但man c ++只是跳转到gcc的manpage。 我不知道它们与C ++编译器有什么不同?
感谢致敬!
这是典型的Ubuntu符号链接混乱。
如果你使用ls -l /usr/bin/c++
,你会发现它实际上是一个符号链接。 至:
/etc/alternatives/c++
而这又是一个符号链接:
/usr/bin/g++
所以,在Ubuntu系统上,c ++是g ++。 链接间接的原因在于有多个包可以提供c ++编译器(比如不同版本的g ++)。 你会在Ubuntu上看到很多。 例如,qmake是到/ etc / alternatives中的文件的链接,这是(在我的系统上)返回到/ usr / bin / qmake-qt3的链接。
c++
是系统上C++
编译器的标准名称。
在GNU系统上,几乎可以肯定安装了GCC
(GNU编译器集合),其中包括一个名为g++
的C++
编译器(GNU的'g')。 但是为了与POSIX兼容,他们也将这个编译器安装为c++
,有时候c++
是一个到g++
的符号链接,有时它是一个硬链接,有时它只是两次安装相同的文件。
对于FreeBSD或NetBSD等其他系统来说,情况并非如此。 这些系统可能没有安装GCC(和其他GNU的东西)。
在我的系统上,这两个文件完全相同:
% diff `which c++` `which g++`
% echo $?
0
这意味着c++
至少会调用同一个编译器,但理论上它可以不同地解释某些命令行选项或者具有一些不同的默认值。 有更多知识的人可以自由地延伸这方面的答案。
在我的机器上, c++
是一个链接:
$ readlink /usr/bin/c++
/etc/alternatives/c++
$ readlink /etc/alternatives/c++
/usr/bin/g++
所以c++
只是一个链接到g++
。