我使用的是哪个 gcc?

which gcc am I using?

我正在尝试在我的 Mac 笔记本电脑和 Mac 迷你台式机上编译一个包。它在笔记本电脑上编译成功,但在 mini 上编译失败(出现以下错误:gcc: error: unrecognized command line option '-Xarch_x86_64')。两台机器都是 运行 OS X Yosemite (10.10.2)。在两台机器上,当我输入

which gcc

我得到:

gcc: aliased to nocorrect gcc

(我不知道这是什么意思)当我输入

echo $PATH

我得到:

/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

这让我觉得如果在 /usr/local/bin 中找到 gcc,那将是我的 gcc。当我输入

ls -l /usr/local/bin/gcc

我得到:

/usr/local/bin/gcc -> /usr/local/bin/gcc-4.8

在两台机器上。但是,当我输入

gcc --version

在 Mini 上我得到:

gcc (Homebrew gcc48 4.8.4) 4.8.4

Copyright (C) 2013 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

在笔记本电脑上我得到:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1

Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)

Target: x86_64-apple-darwin14.1.0

Thread model: posix

XCode安装的版本。 (这是我从 /usr/bin/gcc --version 两台机器上得到的)

当我路径中的第一个 gcc 是 gcc 4.8 的符号链接时,笔记本电脑如何使用 gcc 4.2,我如何让 mini 做同样的事情?

nocorrect 前缀是一个 zsh 结构,会禁止拼写更正。

看起来你可能已经在 Mac Mini 上安装了带有自制软件的特定 gcc 版本,并且你正在使用系统编译器(或者更确切地说,是用 XCode 命令行工具安装的那个) 在笔记本电脑上。

如果你不想使用homebrew安装的gcc,你可以这样做:

brew unlink gcc

这将使符号链接消失,您将使用下一个编译器。希望是你想要的那个。

which gcc returns 类似 gcc: aliased to nocorrect gcc 时,获取实际路径的方法是取消别名 foo,如下所示:

$ unalias gcc
$ which gcc
/usr/bin/gcc

这将删除当前 shell 的别名,您将不得不打开一个新终端或自己重新设置别名。

如果您不想这样做,那么您可以使用 bash 来确定命令的来源:

$ bash -c 'which gcc'
/usr/bin/gcc