Mac OSX Mountain Lion上出现GCC-4.2错误,无法安装mysql-python。

9
我遇到了在Mac OSX Mountain Lion上构建MySQLdb的问题。从OSX Lion升级到OSX Mountain Lion后,我也下载并安装了Xcode 4.4。然后,我进入Xcode的Preference>Downloads并安装了Command Line Tools。
我已经从http://sourceforge.net/projects/mysql-python/下载了MySQL-Python版本1.2.3。
当我运行时:
python setup.py build

我收到以下信息:

running build
running build_py
copying MySQLdb/release.py -> build/lib.macosx-10.6-intel-2.7/MySQLdb
running build_ext
building '_mysql' extension
gcc-4.2 -fno-strict-aliasing -fno-common -dynamic -g -O2 -DNDEBUG -g -O3 -Dversion_info=(1,2,3,'final',0) -D__version__=1.2.3 -I/usr/local/mysql/include -I/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 -c _mysql.c -o build/temp.macosx-10.6-intel-2.7/_mysql.o -Os -g -fno-common -fno-strict-aliasing -arch x86_64
unable to execute gcc-4.2: No such file or directory
error: command 'gcc-4.2' failed with exit status 1

然而,gcc是存在的。当我运行时

gcc

我得到
i686-apple-darwin11-llvm-gcc-4.2: no input files

下面是我发现的一个类似的问题,但它的解决方案,也就是我已经做过的,对我无效。

如何在Mountain Lion上安装MySQLdb

4个回答

36
我在使用Ruby On Rails 3.2.7时遇到了类似的问题。我也将系统升级到Mountain Lion,安装了Xcode 4.4.1并下载了命令行工具。
在命令行中,我收到了一个错误消息,说找不到文件:/usr/bin/gcc-4.2(抱歉,我现在无法粘贴精确的输出)。
我确实有一个 /usr/bin/gcc ,它的版本是 i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 我通过将文件创建符号链接到相同目录并将其命名为Ruby脚本正在查找的名称来解决了这个问题:
sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

之后,一切都正常工作了。


虽然我自己没有尝试过,但我相信这应该适用于所有情况 - 因为它只是提供了代码所寻找的内容。 - taelimoh
我想知道,是否有人能解释一下,在Mountain Lion中为什么会出现这种情况? - Enrico Susatyo
我认为这主要取决于Xcode如何处理其命令行开发者工具,例如在更新Xcode时删除它们的方式。同样重要的是它们如何打包到你在Xcode中下载的捆绑包中。 - tompave
在Mountain Lion上,Python 2.6的Makefile似乎在几个地方都指定了CC=gcc-4.2。CONFIG_FLAGS也会覆盖环境中指定的CC,这使得在命令行上重新定义它变得不可能。这很可能是硬编码到安装的Python所构建的编译器,而不是系统编译器。修改lib/python2.6/config/Makefile中的两个CC定义,一切都会好起来 :-) - Alan Donnelly

4

使用以下命令使 make(或类似工具)使用正确的 gcc:

export CC=/usr/bin/gcc


1
我遇到了这个问题。对我来说,这是因为我从http://python.org下载的DMG安装程序安装了Python。它们是针对错误的gcc构建的。我通过使用Homebrew从源代码编译Python来解决了这个问题:Link
brew install python

链接到正确的gcc

(在我的特定情况下,我使用的是较旧的Python,这就是为什么我使用了DMG安装程序。我发现homebrew也有旧版本的公式)


0

我使用ActivePython绕过了这个问题。

这里有关于MySQLdb的特定安装说明 在这里

由于这是我第一次使用ActivePython,我不确定这是否是一个稳健的解决方案。因此,在我确定这个方法可行之前,我会保留这个问题的开放状态。


我在两台电脑上使用这种方法一个月没有遇到任何问题。 - taelimoh

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