【问题标题】:Set the default GCC to Xcode Command Line Tools将默认 GCC 设置为 Xcode 命令行工具
【发布时间】:2020-09-04 15:55:25
【问题描述】:

如何确保gcc 指向特定的编译器?我可以建立到gccxcode 版本的永久符号链接吗?

我的系统上安装了多个版本的gcc 编译器,包括

`gcc-11` found at `/usr/local/gcc-10/share` (compiled from source following these [instructions][1])
`gcc-9.3.0` found at `/usr/local/Cellar/gcc/9.3.0_1/share`
`gcc-4.8.5` found at `/Users/PatrickT/miniconda/pkgs/gcc-4.8.5-8/share`

默认版本是gcc-4:

gcc --version
gcc (GCC) 4.8.5
which gcc
/Users/PatrickT/miniconda/bin/gcc

gcc 的这个 miniconda 版本不适合我。如果我从 PATH 中删除 miniconda,我的系统将恢复到另一个版本的 gcc 并且一切都按预期工作。但是,我确实使用了 miniconda 的 Python,因此希望将其保留在我的 PATH 中。在我的.zhrc 配置文件中(显然,MacOS Catalina 已将.bashrc 移动到.zhrc),我有:

export PATH="/Users/PatrickT/miniconda/bin:$PATH"
export PATH="/usr/local/bin:$PATH"
export PATH="/usr/local/Cellar/gcc:$PATH"
export PATH="/usr/local/gcc-10/bin:$PATH"

我尝试更改这些行的顺序,但没有任何区别:miniconda 的 gcc 仍然是默认编译器,除非我完全删除第一行,但是...我无法使用 conda 的Python!

背景:我没有直接使用gcc,但我似乎需要它来编译某些脚本。我有xcode 命令行工具和xcode 应用程序,如果这很重要的话。我使用的是 MacOS Catalina 10.15.4

【问题讨论】:

  • 您的问题是一个完美的例子,为什么通过conda init <shell-name> 提供conda 比直接将<miniconda-root>/bin 添加到您的路径更可取。 :-)
  • 我必须承认我对 spyder 发现 conda 环境的机制不是很熟悉,但我相当有信心它可以很好地与新的conda init 使 conda 可用的方式一起工作。请注意,使 conda 可用的首选方法是将 <miniconda-root>/bin 放入 PATH 中,这就是您在那里找到评论的原因。详情请见docs.conda.io/projects/conda/en/latest/user-guide/tasks/…
  • @cel,感谢您的提示。通过删除和重新安装编译器和 Python 发行版,我已经尽可能地清理了我的系统。查找和删除/更改旧事物的符号链接需要花费大量时间。我目前正在使用 conda 环境,但我不确定这有多大帮助...... Anaconda/Miniconda 文档建议设置环境而不添加到 PATH,但随后它抱怨您必须运行 conda init 和这将 conda 放在 PATH 上。哦,好吧...

标签: xcode gcc anaconda macos-catalina


【解决方案1】:

在有知识的人回答这个问题之前,这里有一些值得深思的地方:

  • cc 是指向gcc 的符号链接。

  • CC 是一个环境变量,引用系统的C 编译器。

  • gcc 是指向编译器的符号链接。

  • 典型的默认值为CC=cc,其中cc 通常是指向gcc 的符号链接。

  • 您可以通过设置CC?=gccCC=gcc 来更改特定任务的调用。 ?=' operator is a conditional variable assignment operator: will have an effect only if the variableCCis not yet defined. The=operator will supersede any previously set link. OrCC=gcc-10` 来调用安装在您系统上的特定版本。

  • CC 可以是指向clang (MacOS) 或g++ (Linux) 的链接。有关相关问题,请参阅this answer,特别是 Jonathan Leffler 的回答和 Josh Kodroff 的评论。

参考:GNU Manual on Implicit VariablesGNU Manual on Make

【讨论】:

    【解决方案2】:

    在出现更好的解决方案之前,您可以删除 Anaconda 的 gcc

        conda remove gcc
    

    并检查您的系统现在是否正在从Xcode 接收

        gcc --version
        Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
        Apple clang version 11.0.3 (clang-1103.0.32.59)
        Target: x86_64-apple-darwin19.4.0
        Thread model: posix
        InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
    

    【讨论】:

      猜你喜欢
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 2013-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多