将cc设置为gcc,而不是OSX Yosemite上的叮当声

将cc设置为gcc,而不是OSX Yosemite上的叮当声,c,macos,gcc,clang,osx-yosemite,C,Macos,Gcc,Clang,Osx Yosemite,我一直试图让MacOSXYosemite在调用cc时使用gcc而不是clang,但不管我怎么做,它都拒绝配合。我已经尝试过更改我的bash_profile/bashrc,甚至重新链接符号链接,但都没有用——每次调用“cc”时,运行的仍然是叮当声。我试图强迫它改为gcc(不,只是调用gcc不是一个选项) 我以前问过类似的问题()。你不应该这样做。许多工具依赖于安装二进制文件来指出它们应该做什么。另一个选项是将环境变量CC设置为gcc,并使用$CC…而不是CC…调用编译;当通过configure(自

我一直试图让MacOSXYosemite在调用cc时使用gcc而不是clang,但不管我怎么做,它都拒绝配合。我已经尝试过更改我的bash_profile/bashrc,甚至重新链接符号链接,但都没有用——每次调用“cc”时,运行的仍然是叮当声。我试图强迫它改为gcc(不,只是调用gcc不是一个选项)


我以前问过类似的问题()。

你不应该这样做。许多工具依赖于安装二进制文件来指出它们应该做什么。另一个选项是将环境变量
CC
设置为
gcc
,并使用
$CC…
而不是
CC…
调用编译;当通过
configure
(自动工具)或
cmake
构建包时,也将拾取此环境变量


这也是一种与MacPorts版本的gcc兼容的方法(如更新得多的gcc-4.9.2),可以使用以下设置:
sudo port select--set gcc mp-gcc49

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

如果你想要GCC,你需要安装它。您可以使用一个包管理器来实现这一点,比如MacPorts(我熟悉的一个)。我相信你也可以用自制的

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


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

当人们说他们想使用gcc而不是clang时,我总是很感兴趣-您是否有意识形态上的原因或其他目标?没有,我只需要运行一个非常神秘的软件,它采用gcc,但不能使用clang运行。在XCode 6中,
gcc
是指向
clang
的链接,而不是真正的
gcc
。您必须以某种形状或形式定制GCC,然后更改链接(如果您升级XCode并再次安装命令行工具,则有可能更改链接);然后确保真正的
gcc
首先在
$PATH
中找到,如果愿意,您可以
导出CC=/PATH/to/real/gcc
。请注意,一些设置脚本可能在
配置期间指定CC,但其他脚本允许在
生成期间更改;如果有,请阅读构建帮助。我尝试设置环境变量,但没有成功。这也不是我手动调用cc或gcc,或者对调用的对象有任何实际控制权的情况,因此,这就是我试图让cc运行gcc的原因。@Hendrik-我想您可以尝试设置一个别名,例如,
alias cc=“gcc”
(bash)或
alias cc'gcc'
([t]csh)。但这也是。软件是否至少尊重路径?您可以尝试为它提供一个只知道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++std库。没有C++11支持。它用于维护应用程序等,在苹果的gcc/clang过渡期间构建。你不希望任何现代的发展。