Я хочу использовать библиотеку Python-MySQLDB на Mac, поэтому я скомпилировал исходный код для получения _mysql.so под Mac10.5 с помощью Intel iMac (i386)
Этот _mysql.co работает в 2 моих iMac и другом Macbook. Но это не работает на других компьютерах Mac.
Означает ли это, что какая-то конкретная информация о компьютере была скомпилирована в файл?
Выполните проверку file
в отношении файла _mysql.so
:
% file _mysql.so
_mysql.so: Mach-O 64-bit bundle x86_64
Убедитесь, что он скомпилирован для правильной архитектуры на компьютерах Mac, на которых он не работает. Если вы пытаетесь использовать его на любых компьютерах PowerPC (PPC), вам нужно будет повторно скомпилировать 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
Итак, чтобы ответить на ваш вопрос: Да, похоже, что вы могли скомпилировать модуль без поддержки Universal, однако я не могу ответить на это окончательно без дополнительной информации.
Если вы только создали одну архитектуру (i386/PPC), то она не будет работать на Mac с противоположной архитектурой. Являются ли машины, которые не работают с PPC-машинами, случайно?
Иногда конфигурации сборки настраиваются для построения только текущей архитектуры по умолчанию - я не создавал Python-MySQLDB, поэтому я не уверен, что это так, но стоит проверить.
Вы можете узнать, какие архитектуры были построены с помощью команды "файл" в терминале.
(Кстати, вы имеете в виду ".so"? Я не знаком с файлами ".co".)