【问题标题】:C++ programs on Mac OSMac OS 上的 C++ 程序
【发布时间】:2018-06-18 23:36:47
【问题描述】:

我刚买了一台新的 MacBook Pro 最新版本。我注意到我已经安装了 G++,因此我能够构建 C++ 程序。

我的问题是,macOS 是否安装了 G++(因为我在网上看到它带有一个 clang 编译器)还是需要安装 G++。另请注意,我也没有安装 XCode。

谢谢。

【问题讨论】:

  • 这个问题是询问给定计算机或操作系统捆绑了哪些软件。这在 Stack Overflow 上是题外话。
  • 此外,默认情况下,如果安装了 Clang 或 Xcode IDE,gccg++ 命令通常是调用相应 Clang 前端的别名。
  • 试试gcc —version。它很可能会将自己标识为 clang。
  • @Someprogrammerdude,但 Clang 和 G++ 不是 不同 吗?就像 DuckDuckGo 调用 Google 进行网络搜索一样?
  • 无论如何,回到正题:正如人们已经说过的那样,通过运行g++ --version 并检查它是否显示 GCC 或 Clang,检查您的 g++ 实际上是 g++ 而不是 clang++ 的符号链接。

标签: c++ macos g++


【解决方案1】:

默认的 macOS 安装将包含 伪装gcc 的内容,但这只是遗留问题,因此当您使用通常的 @987654326 进行源安装时,可移植程序将正确检测编译器@ 或使用像 Homebrew 这样的包管理器。

clang 准备好生产之前,Xcode 曾经使用gcc 作为后端。完成此切换后,引入了 gcc 类似工作的存根。据我所知,这只需要gcc-style 选项并将它们转发给clang

虽然 GCC 和 LLVM clang project 是两个不同的东西,但 gcc 命令 不一定附加到 GCC 编译器。

许多程序出于历史原因伪装成其他程序。 sendmail 也随 macOS 一起提供,但这是 Postfix 的包装。 Safari 浏览器将自己标识为“Mozilla”,尽管它与 Mozilla 代码库没有任何共同之处。如果您仔细观察,您会在各处看到这些不同的兼容性存根。

【讨论】:

  • 感谢您的回答。但是this page by Stroustrup 显然说 Clang 和 G++ 是不同的。那怎么办?
  • gcc 命令 不必附加到 GCC 编译器。我已经在答案中解释了这一点。
【解决方案2】:

如果存在 g++,它将编译 c++ 代码。

您需要发出 g++ --version 来找出您拥有的编译器版本。

在我的 Mac 上,g++ --version 让我知道我有苹果的 clang-900.0.37。

最后,您可能需要安装 Xcode 才能走得更远。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2011-07-08
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多