OS X 选择 llvm gcc 编译器

OS X choose llvm gcc compiler

本文关键字:gcc 编译器 llvm 选择 OS      更新时间:2023-10-16

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

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

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

在搜索SO之后,我发现了这篇文章,表明'-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编译器?

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

然后,您可以尝试运行 clang --version 以验证 clang 是否已正确安装并在命令行中可用。然后要使用自动工具进行编译,您可以将其传递给 CC 和 CXX 变量,如 @paul-roub 所说:

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

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

配置脚本和生成文件通常会遵循CCCXX环境变量,告诉它们使用特定的编译器。

例如:

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

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