2009-12-02 6 views
0

Je veux utiliser la bibliothèque Python-mysqldb sur Mac, donc j'ai compilé le code source pour obtenir le _mysql.so sous Mac10.5 avec mon iMac Intel (i386)Pourquoi _mysql.co qui a compilé sur un Mac ne fonctionne pas sur un autre?

Ce _mysql.co travaille dans 2 de mes iMacs et un autre Macbook. Mais ça y est, ça ne marche pas dans les autres Macs. Est-ce que cela signifie que certaines informations spécifiques à la machine ont été compilées dans le fichier?

Répondre

1

Effectuer une vérification file contre le fichier _mysql.so:

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

Assurez-vous que il est compilé pour la bonne architecture sur les Mac sur lesquels il ne fonctionne pas. Si vous essayez de l'utiliser sur n'importe quel Mac PowerPC (PPC), vous devrez recompiler MySQLDB en Universal.

Par exemple, un binaire universel (comme la version pré-installée de Python) ressemblerait à ceci:

% 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 

Pour répondre à votre question: Oui, il semble que vous pourriez avoir compilé le module sans support universel, cependant je ne peux pas y répondre définitivement sans plus d'informations.

+0

Le _mysql.so j'ai compilé est juste pour i386. Et ces iMac qui ont un problème sont également l'architecture i386. – Yinan

+0

Ok! Donc, autre que de ne pas simplement travailler, quelles erreurs recevez-vous lorsque vous essayez d'importer le module? – jathanism

2

Si vous n'avez construit qu'une seule architecture (i386/PPC), cela ne fonctionnera pas sur les Mac ayant l'architecture opposée. Sont les machines qui ne fonctionnent pas les machines PPC, par hasard?

Parfois, les configurations de construction sont configurées pour ne construire que l'architecture actuelle par défaut - je n'ai pas compilé Python-MySQLDB donc je ne suis pas sûr que ce soit le cas ici, mais ça vaut le coup de vérifier.

Vous pouvez trouver quelles architectures ont été construites avec la commande 'file' dans Terminal.

(Soit dit en passant que tu veux dire ".so "Je ne suis pas familier avec les fichiers" .co"?.)

Questions connexes