【问题标题】:Set cc to gcc instead of clang on OSX Yosemite在 OSX Yosemite 上将 cc 设置为 gcc 而不是 clang
【发布时间】:2015-03-04 14:45:42
【问题描述】:

我一直试图让 Mac OSX Yosemite 在调用 cc 时使用 gcc 而不是 clang,但无论我做什么,它都拒绝配合。我已经尝试更改我的 bash_profile/bashrc 甚至重新链接符号链接,但无济于事 - 每次我调用“cc”时,它仍然运行叮当声。我试图强制它改为 gcc(不,只是调用 gcc 不是一种选择)。

我之前问过一个类似的问题 (Make gcc default c compiler on Yosemite/disable clang)。

【问题讨论】:

  • 当人们说他们想使用 gcc 而不是 clang 时,我总是很感兴趣 - 您是否有意识形态原因或其他目标?
  • 不,我只需要运行一个非常神秘的软件,它假定 gcc 但不能用 clang 运行。
  • 在 XCode 6 中,gcc 是指向 clang 的链接,而不是真正的 gcc。您必须以某种形状或形式获得 GCC 的自定义构建,然后更改链接(如果您升级 XCode 并再次安装命令行工具,则可能会更改链接)。
  • 我想首先你应该确保它是真实的gcc,而不是clang 的包装;然后确保 real gcc 首先在 $PATH 中找到,如果您愿意,可以在 export CC=/path/to/real/gcc 中找到。请注意,某些设置脚本可能会在configure 期间指定 CC,但其他设置脚本在make 期间允许更改;如果有,请阅读构建帮助。

标签: c macos gcc clang osx-yosemite


【解决方案1】:

OS X 和 Xcode 都没有真正的 GCC。为了与假定编译器称为“gcc”的脚本兼容,它具有该名称的可执行文件,但它们都是 Clang 的前沿。再多的符号链接、设置环境变量或设置别名都不会允许这些可执行文件运行真正的 GCC。

如果你想要 GCC,你需要安装它。您可以使用其中一种包管理器来做到这一点,例如 MacPorts(我熟悉的那个)。我相信你也可以使用 Homebrew。

您不应修改 /usr/bin 中的任何内容。如果您已经这样做了,您应该尽可能恢复您所做的更改。

表现良好的包管理器也不会修改该目录。它们应该安装到单独的目录,例如 /opt/local/bin、/usr/local/bin 等。在这种情况下,您需要修改 PATH 以将这些目录放在 /usr/bin 之前。

【讨论】:

    【解决方案2】:

    你不应该这样做。许多工具依赖于安装二进制文件来指向他们应该做的事情。另一种选择是将环境变量CC设置为gcc,并使用$CC ...而不是cc ...调用编译;通过configure (autotools) 或cmake 构建包时也会使用此环境变量。

    这也是与 gcc 的 MacPorts 版本兼容的方法(例如更新的 gcc-4.9.2),可以通过以下方式设置:sudo port select --set gcc mp-gcc49

    【讨论】:

    • 我尝试设置环境变量,但没有成功。这也不是我手动调用 cc 或 gcc 的情况,或者对调用哪个有任何实际控制权,所以这就是我试图让 cc 只运行 gcc 的原因。
    • @Hendrik - 我想你可以尝试设置一个别名,例如 alias cc="gcc" (bash) 或 alias cc 'gcc' ([t]csh)。但这也是problematic
    • 软件至少尊重PATH吗?你可以尝试给它一个只知道 gcc(而不是 clang)的环境
    • @BrettHale gcc 在 OS X 上实际上也调用了 Calng(尝试 gcc -v 返回 clang-700.1.81 - 与尝试 cc -v 时相同...)
    • @AvielGross - 你会注意到它也配置了 gxx-include-dir=/usr/include/c++/4.2.1 - 即一个旧的 g++ 标准库。不支持 C++11。它用于维护在 Apple 的 gcc / clang 过渡期间构建的应用程序等。您不希望将其用于任何现代开发。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    相关资源
    最近更新 更多