2011-03-12 20 views
0

py2app相关的错误结束与下面的错误结束:py2app一起libgfortran.3.dylib

/usr/bin/strip: the __LINKEDIT segment does not cover the end of the file 
(can't be processed) in: test.app/Contents/Frameworks/libgfortran.3.dylib 
stripping saved 1222348 bytes (88617336/89839684) 

控制台输出的最后一行:

../Frameworks/libgfortran.3.dylib: mach-o, but wrong architecture 

我怎样才能解决这个问题?

我使用 雪豹(x86_64的)
的Python 2.6.6(r266:84292,2011年2月4日,二十时12分20秒)
[GCC 4.2.1(苹果公司建立5646)(点1)]在达尔文

回答

0

首先确定您计划为其构建的体系结构和操作系统版本。

然后确保libgfortran和您的其他依赖关系是为这些体系结构编译的。 (您可以使用lipo -infofile来打印包含在Mach-O二进制文件中的体系结构)。最后,如果架构是您正在使用的Python版本的那些架构的子集,则编译/使用仅针对这些架构而构建的Python版本,或者使用hack distutils来删除标志(并在需要时添加-isysroot),如this script

+0

@ nicholas-riley:好的,我有点迷失在这里。我使用MacPorts的py26-py2app-devel(0.5.3)。它是通用的。我也有来自macports的gcc44,虽然它不是默认的gcc。 gcc44也是内置的+通用的,但不知何故libgfortran.3.dylib只是i386。我如何理解py2app使用的gcc?最后,我实际上并不需要64位,这还不是终端用户软件,我现在只在我自己的机器上进行测试。什么是最简单的出路方式? – gok 2011-03-12 17:43:54

+0

distutils(这是你在py2app中使用的)尝试调用带编译标志的编译器。因此,如果您使用MacPorts中的Python,它将使用该版本的Python。我认为默认情况下MacPorts只有64位,所以你最好的选择可能是从python.org安装一个32位的Pythons并使用它。可能比试图修复gfortran的构建过程更容易。 – 2011-03-12 22:13:30