Homebrew无法找到gcc。

8

我在Lion系统上安装homebrew遇到了问题。出现奇怪的情况,它选择clang而不是gcc。

==> Upgrading gnutls
...
checking for gcc...
/usr/bin/clang checking whether the C compiler works... no

'brew doctor' 的输出如下:

We couldn't detect gcc 4.2.x. Some formulae require this compiler. NOTE: Versions of XCode newer than 4.2 don't include gcc 4.2.x.

注意:我已经从XCode安装了命令行工具,包括gcc。

$ which gcc
/usr/bin/gcc
$ gcc -v
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)

我该如何强制使用gcc来安装brew?
3个回答

12
自 Xcode 4.2 以后,苹果停止了在 Xcode 中分发 gcc。相反,他们分发 llvm-gcc(和 clang),这些都 不是 gcc。你可以使用像您之前所做的 gcc -v 来查看此信息:它显示 LLVM build
如果要使用 gcc,您将不得不自己编译它。有一个 homebrew 公式来实现这个目的,但是您需要使用 brew tap homebrew/dupes
请注意,截至今天,如果使用 clang 编译,gcc 公式将无法工作。您必须通过 brew install --use-llvm gcc 安装它。
此外,请注意 Homebrew 明确搜索 gcc-4.2。您需要为 Homebrew 创建符号链接,以便它能够找到 gcc。

谢谢提供的信息。我尝试了“brew tap”,但我的brew版本太旧,无法使用这个新功能,“brew upgrade”是我在原问题中遇到错误的方式,所以我陷入了困境。最终我通过卸载brew(请参见此处),然后重新安装(请参见此处)来解决问题。在重新安装之前,我还需要执行一些额外的步骤,因为我不明智地将brew安装为root用户,例如“sudo rm /usr/local/.git”。最终,我并不需要一个新的gcc。 - ishmael
1
@ishmael 这就是 brew update(Homebrew本身)和 brew upgrade(公式)之间的区别。 - Daniel Beck
对我来说,使用--use-llvm会在进行make bootstrap时出错。brew install --use-gcc gcc48适用于我。 - xgdgsc

0

0

我不确定这是何时发生的,但现在苹果命令行工具包括gcc和clang可执行文件:

$ which gcc
/usr/bin/gcc

$ gcc -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin19.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

$ which clang
/usr/bin/clang

$ clang -v
Apple clang version 11.0.0 (clang-1100.0.33.17)
Target: x86_64-apple-darwin19.3.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

你可以通过运行以下命令来获取它:

$ xcode-select --install

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接