g ++编译器与C ++的gcc编译器相同吗? (Mac OS X)

时间:2014-01-27 17:49:56

标签: c++ macos gcc

我只需说清楚一件事。在University,我们正在学习C ++编程语言,他们建议我们使用GNU C ++编译器,它是GCC的一部分。 因此,在我的Mac OS X Mavericks上,我从developers.apple.com下载 命令行工具 。 我写了一个简单的C ++程序,我使用g ++命令编译这个程序,如下所示:

g++ program.cpp
./a.out

程序运行完美。但正如我所知,使用不同的编译器意味着你必须为这个特定的编译器使用正确的语法/命令/库,所以在大学里我们使用“GNU C ++编译器”,我只想弄清楚g ++命令意味着我使用“GNU C ++编译器”。

干杯。

2 个答案:

答案 0 :(得分:2)

传统上,gccg++都是GNU C编译器套件的组件。 gcc是C编译器,g++是C ++编译器。

在当前版本的Mac OS X上,命令gccg++都被视为clangclang++的备用名称,它们是Clang C的组件编译器。但是,这个编译器几乎完全与GCC兼容 - 确实存在的一些差异几乎肯定不会出现在你正在进行的课程中。

(最显着的区别是Clang的诊断要好得多:它会指出一行中出现语法错误的确切位置,而不仅仅指出它在哪一行,并且它通常可以识别潜在的拼写错误或在某些情况下的细微错误GCC会给你一个神秘的错误信息。如果你只是学习C,你会很感激很多。)

答案 1 :(得分:1)

根据@duskwuff,我更愿意使用clang++,但是如果你必须兼容,那么你可以通过macports安装真正的GNU编译器。

安装macports(包括xcode-select步骤)后,只需执行以下操作:

$ sudo port selfupdate
$ sudo port install gcc46

(或gcc47等)

编译器将在您的$PATH中(如果您正确设置了macport),但显然,它将是/opt/local/bin/gcc46(请参阅sudo port select gcc)。