如何在OS X 10.6.2上构建64位Python
为什么呢?我想这样做是因为安装SciPy时推荐这么做,我觉得这会是一个很好的学习机会。这个问题之前有人问过(比如这里)。大家推荐的答案似乎是使用MacPorts,但正如我所说,我想了解这个过程是怎么进行的。
总之,我下载了源代码(Python-2.6.4.tgz)并解压了。我看了下如何构建一个64位的“框架”版本的说明。根据我的理解,我应该运行
./configure --enable-framework --enable-universalsdk=/ --with-univeral-archs=intel
configure运行了一段时间……然后完成了。当我执行make时,明显出现了问题:
$ make
gcc -c -arch ppc -arch i386 -isysroot / -fno-strict-aliasing -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -IInclude -I./Include -DPy_BUILD_CORE -o Modules/python.o ./Modules/python.c
In file included from //usr/include/architecture/i386/math.h:626,
from //usr/include/math.h:28,
from Include/pyport.h:235,
from Include/Python.h:58,
from ./Modules/python.c:3:
//usr/include/AvailabilityMacros.h:108:14: warning: #warning Building for Intel with Mac OS X Deployment Target < 10.4 is invalid.
gcc被调用时使用了错误的参数。我是配置时参数错了,还是应该在环境中设置编译器标志,还是其他什么原因呢?
编辑:我在configure的输出中没有看到任何错误……我看到这一行:
checking for OSX 10.5 SDK or later... yes
它以此结束
creating Modules/Setup
creating Modules/Setup.local
creating Makefile
编辑2:我以为我从readme中复制过来了……
我确实复制了!readme里有个错别字!我这年纪大了,眼花了。;)
2 个回答
1
你的 ./configure
选项设置得不对。--enable-universalsdk
应该指定正确的SDK,而不是 /
!这就是为什么 gcc
感到困惑的原因,看看 -isysroot
这个选项就明白了。
另外,你的gcc只用 -arch ppc -arch i386
这两个选项,这里没有包含 -arch x86_64
,而这个是指64位的Intel处理器。
1
为了选择一个正确的答案,我在这里总结一下上面的评论:
正如Virgil Dupras所指出的,这个标志确实有个拼写错误:
--with-universal-archs=intel
这个错误来自于文件Mac/readme
,但我应该在发布之前就发现它。还有,我建议你看看Ned Deily非常有帮助的评论。去关注这些人并给他们投票支持吧。