【问题标题】:OS X 10.9 gcc links to clangOS X 10.9 gcc 链接到 clang
【发布时间】:2013-11-01 08:37:40
【问题描述】:

我刚刚注意到,在安装 OS X 10.9 后,g++ 编译器链接到 clang 编译器。无论如何要恢复到 gcc/g++ 吗?

【问题讨论】:

  • 奇怪的是,我发现在 os x 10.10 gcc 实际上并没有链接到 clang,而是类似的东西。你知道这两者之间的确切区别吗?

标签: gcc g++ osx-mavericks


【解决方案1】:

这是设计使然,并不是 OS X 10.9 中的新功能。 Apple 很久以前就弃用了 GCC。只需使用 Clang,或者如果您需要 fortran/openmp/...,请通过 homebrew/macports/...自行安装 GCC。

【讨论】:

  • 您会发现不支持 GCC 和将 clang 伪装成 gcc 之间的区别。
  • 它们完全不同——许多现有的代码库无法在 Clang 中编译,而它们在 gcc/g++ 中运行良好。
  • 有什么意义?它不会阻止我使用 Gcc,不会阻止我恢复唯一可观察到的差异alias g++ /path/to/g++,并且由于此硬链接不会显示消息“使用 CLANG 而不是 GCC,因为我们讨厌免费软件”,所以它甚至没有传达他们的意图。它看起来像是寻找问题的解决方案。
  • Apple 无权弃用 GCC。
【解决方案2】:

你必须从macports安装它:

$ sudo port install gcc49

但是我不确定你如何将gcc 集成到 Xcode 5 中,但是你没有提到为什么不能使用 clang

【讨论】:

  • @rholt 那么您是否也使用了相同的版本 gcc?我怀疑不是。
  • @rholt 我不这么认为;您的动机是您的工作在考试期间编译,为此您需要在两个系统上使用所有内容的确切版本(并且两个系统需要是同一个平台)。所以如果你不能完全重现它,你也可以使用clang
  • 我不能使用 clang,因为我的代码依赖于像嵌入式函数这样的 GNU gcc 扩展...... clang 会抛出大量错误
  • 这对我不起作用。我从 macports 安装了 gcc48,但 gcc 仍然指向终端中的 clang。
  • @Justin 听起来你还没有配置$PATH,它的配置是macports安装过程的一部分。
【解决方案3】:

这种方式已经很久了。 10.8 附带的“GCC”实际上是带有 LLVM 后端的 GCC 前端。

获取 GCC 的最佳方式是通过Homebrew。在链接页面底部的一行 homebrew install 命令之后,您只需要:

$ brew install gcc49

与 macports 不同,Homebrew 不会弄乱您的系统目录,并且在管理版本和卸载方面要好得多。它也不需要称为sudo 的拐杖。

【讨论】:

  • 您关于 macports 的陈述具有误导性且偏离主题。
  • 对于任何想知道的人,brew tap homebrew/versionsbrew install gcc49 的先决条件
  • @trojanfoe 直言不讳,有点刻薄,当然。但它是如何误导的?这当然是话题。 OP 显然正在寻找获取 GCC 的最佳方法,并暗示所有包管理器完全相同会产生误导。
  • 这是误导,因为它不是真的;自制程序会导致更多的系统混乱,并且可用的端口更少。我建议使用 macports,而您建议使用 homebrew,这很好,应该是这样。重点是主观的,我们即将对此进行的争论使其偏离主题。
  • @Eddy Homebrew 的 GCC 的默认名称是 g++-49。您可以通过在 /usr/local/bin 中添加 Bash 别名或符号链接来更改它。该目录应该已经首先出现在您的$PATH 中,因此符号链接应该覆盖默认的g++,而无需更改任何原始 OSX 文件。
【解决方案4】:

可访问且最新的 GCC 软件包位于 http://hpc.sourceforge.net/

【讨论】:

  • 我刚刚意识到您的答案与我要发布的答案相同。无论如何,让我添加一些更多的方向。下载他们的软件包并按照他们的指示进行操作。安装到 /usr/local/bin 后,您可能需要编辑 PATH 变量并将 /usr/local/bin 附加到 PATH 的前面。这将保证当您调用 gcc 或 g++ 时,您实际上调用的是正确的,而不是旧的 mac 不推荐使用的编译器。注意:仅当 /usr/bin 目录中有 g++ 编译器时,此步骤才重要。我这样做是因为这台计算机最初是 10.5。
【解决方案5】:

您还可以从http://hpc.sourceforge.net/ 获得 g++ 编译器。他们将编译器放在预构建的包中。只需下载并按照他们的指示。请注意,您可能需要更改您的可执行路径并在 /usr/bin 之前添加 /usr/local/bin。这是为了确保 g++ 调用正确的编译器。

【讨论】:

  • 只是出于好奇,为什么这被否决了?该帖子解释了如何获取 g++ 编译器的替代版本并更改系统设置,以便 g++ 不再调用 clang 的 C++ 编译器。这不是原发帖人要问的吗?
猜你喜欢
  • 1970-01-01
  • 2014-06-23
  • 2013-12-02
  • 1970-01-01
  • 2017-05-17
  • 2013-05-15
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多