【问题标题】:OS X choose llvm gcc compilerOS X 选择 llvm gcc 编译器
【发布时间】:2014-04-02 13:57:19
【问题描述】:

TLDR:我想使用 llvm 编译器,而不是使用 macports 安装的其他 gcc 编译器。

在尝试编译 c++ 库时,我遇到了这个错误:

c++: error: unrecognized option '-arch'

在 SO 上搜索后,我发现 this post 的帖子表明 '-arch' 选项是 Apple 对 gcc 的扩展的一部分。

不久前,我使用 Macports 安装了一个不同的 GCC 版本,以便为其他一些软件编译一些工具。现在,当我检查这个时,我可以确认它使用的是 Macports 的版本:

$ g++ --version
g++ (MacPorts gcc46 4.6.4_3) 4.6.4
$ which g++ --version
/opt/local/bin/g++

使用port select 只会产生两个选项,

$ port select --list gcc
Available versions for gcc:
    mp-gcc46 (active)
    none

所以我不能在这里更改默认编译器。我在哪里可以更改它以使用 /usr/bin/ 中的 llvm 编译器?

【问题讨论】:

    标签: c++ macos gcc compilation macports


    【解决方案1】:

    LLVM 自带的编译器是 Clang,不是 GCC。你安装了 XCode 5 吗?还有命令行工具吗? This post 非常清楚地解释了如何安装它们。

    然后您可以尝试运行clang --version 来验证clang 是否已正确安装并且在命令行中可用。然后用自动工具编译,你可以像@paul-roub所说的那样在CC和CXX变量中传递它:

    CC=clang CXX=clang++ ./configure
    make
    

    请记住,Apple 使用的是 LLVM/Clang 的修改版本。他们以前使用 GCC,但如果我没记错的话,当许可证更改为 GPLv3 时,他们放弃了对它的支持。在使用 XCode 5.1 进行干净的 10.9 安装时,您根本不应该使用 GCC,它已完全被 Clang 取代。

    【讨论】:

      【解决方案2】:

      配置脚本和 Makefiles 通常会尊重 CCCXX 环境变量,告诉他们使用特定的编译器。

      例如:

      $ CXX=/usr/bin/g++ CC=/usr/bin/gcc ./configure
      $ CXX=/usr/bin/g++ CC=/usr/bin/gcc make
      

      【讨论】:

      • 有没有办法让它成为永久性的改变?我也在尝试使用 python setup.py install 而不是 makefile 来安装一些东西。
      • 您可以将export CXX=/usr/bin/g++ 等添加到您的.Profile,但这可能会搞砸其他事情。我希望 Python 设置工具也能尊重这些变量,但还没有尝试过。
      【解决方案3】:

      我相信您需要选择none 才能返回默认编译器。 如果没有使用 macports 选择 gcc 编译器(因此,/opt/bin 中不存在名为 gcc 的链接),那么遇到的第一个 gcc 编译器将是 /usr/bin 中的那个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-18
        • 2015-05-17
        • 1970-01-01
        • 2011-11-11
        • 2012-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多