2009-12-02 28 views
0

我想用在Mac上的Python MySQLdb的图书馆,所以我已经编译源代码来获得Mac10.5下_mysql.so与我的iMac电脑的英特尔(I386)为什么在一台Mac上编译的_mysql.co不适用于另一台?

这_mysql.co作品在我的iMac电脑2和另一个Macbook。但就是这样,它在任何其他Mac上都不起作用。

这是否意味着一些机器特定的信息被编译到文件中?

回答

1

_mysql.so文件执行file检查:

% file _mysql.so 
_mysql.so: Mach-O 64-bit bundle x86_64 

确保它是针对其不适用的Mac上正确的体系结构进行编译的。如果您尝试在任何PowerPC(PPC)Mac上使用它,则需要将MySQLDB重新编译为通用二进制文件。

例如,通用二进制文件(如Python的预装版本)是这样的:

% file /usr/bin/python 
/usr/bin/python: Mach-O universal binary with 3 architectures 
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64 
/usr/bin/python (for architecture i386):  Mach-O executable i386 
/usr/bin/python (for architecture ppc7400):  Mach-O executable ppc 

因此,要回答你的问题:是的,好像你可能已经编译模块没有普遍的支持,但是我无法在没有更多信息的情况下回答这个问题。

+0

我编译的_mysql.so只适用于i386。而那些有问题的iMacs也是i386架构。 – Yinan 2009-12-03 13:19:34

+0

好的!因此,除了不工作之外,当您尝试导入模块时,您会收到哪些错误? – jathanism 2009-12-03 14:10:50

2

如果您只构建了一个架构(i386/PPC),那么它将无法在具有相反架构的Mac上运行。有没有机会使用PPC机器?

有时候构建配置被设置为默认构建当前体系结构 - 我还没有构建Python-MySQLDB,所以我不确定这是否是这种情况,但值得检查。

您可以在Terminal中找到使用'file'命令构建的体系结构。

(顺便说一下你的意思 “所以 ”我不熟悉的“ .CO” 文件?)

相关问题