我想用在Mac上的Python MySQLdb的图书馆,所以我已经编译源代码来获得Mac10.5下_mysql.so与我的iMac电脑的英特尔(I386)为什么在一台Mac上编译的_mysql.co不适用于另一台?
这_mysql.co作品在我的iMac电脑2和另一个Macbook。但就是这样,它在任何其他Mac上都不起作用。
这是否意味着一些机器特定的信息被编译到文件中?
我想用在Mac上的Python MySQLdb的图书馆,所以我已经编译源代码来获得Mac10.5下_mysql.so与我的iMac电脑的英特尔(I386)为什么在一台Mac上编译的_mysql.co不适用于另一台?
这_mysql.co作品在我的iMac电脑2和另一个Macbook。但就是这样,它在任何其他Mac上都不起作用。
这是否意味着一些机器特定的信息被编译到文件中?
对_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
因此,要回答你的问题:是的,好像你可能已经编译模块没有普遍的支持,但是我无法在没有更多信息的情况下回答这个问题。
如果您只构建了一个架构(i386/PPC),那么它将无法在具有相反架构的Mac上运行。有没有机会使用PPC机器?
有时候构建配置被设置为默认构建当前体系结构 - 我还没有构建Python-MySQLDB,所以我不确定这是否是这种情况,但值得检查。
您可以在Terminal中找到使用'file'命令构建的体系结构。
(顺便说一下你的意思 “所以 ”我不熟悉的“ .CO” 文件?)
我编译的_mysql.so只适用于i386。而那些有问题的iMacs也是i386架构。 – Yinan 2009-12-03 13:19:34
好的!因此,除了不工作之外,当您尝试导入模块时,您会收到哪些错误? – jathanism 2009-12-03 14:10:50