如何在OS X 10.6.2上构建64位Python

3 投票
2 回答
1111 浏览
提问于 2025-04-15 18:44

为什么呢?我想这样做是因为安装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非常有帮助的评论。去关注这些人并给他们投票支持吧。

撰写回答