【问题标题】:Is g++ compiler the same with the gcc compiler for C++? (Mac OS X)g++ 编译器与 C++ 的 gcc 编译器相同吗? (Mac OS X)
【发布时间】:2014-02-18 17:06:02
【问题描述】:

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

g++ program.cpp
./a.out

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

干杯。

【问题讨论】:

  • 您可以使用g++ --version 来检查您是否在使用 GNU C++。在我的 OS X Mavericks 中,g++ 不是GNU C++,而是clang++
  • 这和g++不完全一样;它是 LLVM 编译器(非常有效地)伪装成 GNU g++ 编译器。 /usr/bin/g++ --version 产生,对我来说,Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1 Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn) Target: x86_64-apple-darwin13.0.0 Thread model: posix
  • 如果您担心,请联系GNU C++ Compiler
  • @ProgrJohn stackoverflow.com/questions/19535422/… 这会对你有所帮助。
  • 学习语言和编程。不要担心编译器之间的微小差异,直到很久以后。如果有的话,请使用您可以使用的所有现代编译器构建您的项目,将每个编译器设置为最大警告级别,并确保其中任何一个都不会发出吱吱声。

标签: c++ macos gcc


【解决方案1】:

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

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

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

【讨论】:

  • 关于更好的诊断的东西是有争议的。现在 GCC 还使用 ASCII 艺术来准确指出一行代码中发生错误的位置。竞争是一件美妙的事情:)
  • 真的谢谢你!当我第一次编译 c++ 程序时,我看到编译器会用颜色突出显示错误,而且它对错误更特别,而不是我在 Linux 上使用的 gcc。
  • @Praetorian:据我了解,GCC 的解析器(仍然)在识别语法错误的“根本原因”方面并不出色——它会告诉你它在什么时候完全放弃了,但是这可能与实际误差有一段距离。听说在改进,但还是比不上 Clang,恐怕!
【解决方案2】:

根据@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)。

【讨论】:

  • 既然可以使用自制软件,为什么还要使用 macports?
  • @rano 因为 macports 有更多的端口并且不那么复杂 WRT $PATH(至少据我所知)。
  • Homebrew 的 $PATH 就像 π 一样简单:确保 /usr/local/bin 在那里。 Bam,完成了。
  • 我尝试通过自制软件安装,例如:homebrew install gcc46,返回结果是缺少包。所以我会尝试通过macports安装它。干杯
  • @trojanfoe 你怎么说更多端口?永远不要相信需要 sudo 才能做到这一点的程序; )
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多