关于OS X上可用的各种C ++编译器的许多问题

时间:2016-02-24 02:33:54

标签: c++ xcode macos c++11 gcc

我无法理解可用的不同编译器。

我主要使用Xcode进行编写和编译,在Xcode的首选项中,C ++编译有以下所有选项:

C ++语言方言:

  • C ++ 98 [-std = c ++ 98]至C ++ 14 [-std = c ++ 14]
  • GNU ++ 98 [-std = gnu ++ 98]到GNU ++ 14 [-std = gnu ++ 14]

C ++标准库:

  • libstdc ++(GNU C ++标准库)
  • libc ++(支持C ++ 11的LLVM C ++标准库)

    1. 有人可以解释究竟是什么^?

    2. 我理解(如果我错了,请纠正我),苹果不再使用Xcode分发GCC并使用Clang代替?

    3. 如果是这样的话,为什么Xcode可以选择GNU C ++标准库? GNU不是GCC吗?

    4. 在我的本地终端中使用g++ filename.cpp运行C ++代码时调用了什么编译器?

    5. 有没有办法确保这个g++"编译器"是最新的?

    6. 在终端中使用g++进行编译与使用Xcode之间的区别是什么?

    7. 另外,如果我尝试使用Clang运行C ++程序会有什么不同?

    8. 我的班级要求我们通过终端上的ssh在部门服务器的编译器上测试我们的程序。服务器是Unix机器,我知道它的编译器是GNU的GCC编译器,我们也使用g++访问它。这是否意味着我的终端中的本地g++也是GCC?

编辑:语法

1 个答案:

答案 0 :(得分:4)

1

C ++语言方言

C++98[-std=c++98] through C++14[-std=c++14]
GNU++98[-std=gnu++98] through GNU++14[-std=gnu++14]

C ++语言随着时间的推移而发展。这些是您可以使用的各种语言版本。如果你必须与旧的东西兼容,你可能会被迫使用旧的。否则你可能想要使用最新的,在上面的列表中是c ++ 14。 14代表2014年,98代表1998年 - 它应该代表该标准版本被祝福的那一年。

除标准C ++外,还有非标准扩展。 Gnu是编译器"制造商"," GNU"以上是GNU为特定文档版本指定的非标准扩展。

C ++标准库:

libstdc ++(GNU C ++标准库) libc ++(支持C ++ 11的LLVM C ++标准库)

除基本语言外,标准库也是标准的一部分。这是标准库的两种不同实现。第一个是GNU,第二个是llvm。 llvm是一个不同的编译器制造商。

在osx上你可能会使用libc ++,因为我相信llvm编译器(clang ++)现在是标准的。如果需要,llvm编译器将支持gnu扩展。你可能不会。只需使用最新版本的默认版本。

  1. 两个不同的部分,编译器和标准库。您可以将clang ++与libstd ++
  2. 一起使用
  3. g ++ -v会告诉你
  4. 不是真的。将xcode更新到最新版本或开始查看自制程序或端口,以获得您喜欢的任何编译器的最新和最好的包。
  5. 可能是相同的编译器,您可以将其设置为指向已安装的任何编译器。所以每个人都指出了你的选择。
  6. g ++和clang ++都符合标准。你不太可能注意到很多不同。他们会将相同的源文件编译成等效的二进制文件。
  7. 在任何终端运行g ++ -v以确切了解它是什么。