首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"g++“和"c++”编译器

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

Stack Overflow用户
提问于 2009-11-11 11:09:09
回答 4查看 40.3K关注 0票数 59

我刚刚在我的Ubuntu上发现,有两个不同的C++编译器:/usr/bin/g++/usr/bin/c++。我对后者并不熟悉,但man c++只是跳到了gcc的手册页。我想知道他们作为C++编译器有什么不同?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-11 11:24:20

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

如果你使用ls -l /usr/bin/c++,你会发现它实际上是一个符号链接。至:

代码语言:javascript
复制
/etc/alternatives/c++

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

代码语言:javascript
复制
/usr/bin/g++

因此,在Ubuntu系统上,c++就是g++。间接链接背后的原因是有多个包可以提供c++编译器(例如不同版本的g++)。你会在Ubuntu上看到很多这样的东西。例如,qmake是指向/etc/alternatives中文件的链接,它(在我的系统上)是指向/usr/bin/qmake-qt3的链接。

票数 64
EN

Stack Overflow用户

发布于 2012-06-27 16:51:56

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

在GNU系统上,您几乎肯定安装了GCC (GNU编译器集合),其中包括一个名为g++C++编译器('g‘代表GNU)。但是为了与POSIX兼容,他们也将这个编译器安装为c++,有时c++是指向g++的符号链接,有时是硬链接,有时只是同一个文件安装两次。

对于FreeBSD或NetBSD等其他系统,情况可能并非如此。有可能这些系统没有安装GCC (和其他GNU软件)。

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

代码语言:javascript
复制
% diff `which c++` `which g++`
% echo $?
0

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

票数 33
EN

Stack Overflow用户

发布于 2009-11-11 11:12:47

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

代码语言:javascript
复制
$ readlink /usr/bin/c++
/etc/alternatives/c++
$ readlink /etc/alternatives/c++
/usr/bin/g++

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

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1712756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档