Почему _mysql.co, скомпилированный на одном Mac, не работает на другом? - PullRequest
0 голосов
/ 02 декабря 2009

Я хочу использовать библиотеку Python-MySQLDB на Mac, поэтому я скомпилировал исходный код, чтобы получить _mysql.so под Mac10.5 с моим Intel iMac (i386)

Этот _mysql.co работает на 2 моих iMac и на другом Macbook. Но это все, оно не работает ни на одном другом Mac.

Означает ли это, что некоторая информация о машине была скомпилирована в файл?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Если вы создали только одну архитектуру (i386 / PPC), она не будет работать на компьютерах Mac с противоположной архитектурой. Машины, которые не работают PPC, случайно?

Иногда конфигурации сборки настроены на сборку только текущей архитектуры по умолчанию - я не собирал Python-MySQLDB, поэтому не уверен, что это так, но стоит проверить.

Вы можете узнать, какие архитектуры были построены с помощью команды 'file' в Терминале.

(Кстати, вы имеете в виду ".so"? Я не знаком с файлами ".co".)

1 голос
/ 02 декабря 2009

Выполните проверку file для файла _mysql.so:

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

Убедитесь, что он скомпилирован для правильной архитектуры на компьютерах Mac, на которых он не работает. Если вы пытаетесь использовать его на любом 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, однако я не могу ответить на этот вопрос без дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...