Запустите универсальный двоичный файл OS X в 32-разрядном режиме
У меня есть сторонняя библиотека (интерфейс к инструментам конечного состояния Xerox), которые представляют собой универсальные двоичные файлы с двумя внутренними вариантами: PPC и вариант i386. У меня также есть интерфейс Python для библиотеки (которая использует ctypes).
Но когда я пытаюсь запустить пример кода, предоставляемого с интерфейсом Python, я получаю сообщение об ошибке, что библиотека неверна:
Ошибка импорта: dlopen(/Users/arne/sw/lib/libxcfsm.dylib, 10): подходящее изображение не найдено. Нашел:
/Users/arne/sw/lib/libxcfsm.dylib: Mach-O, но неправильная архитектура
Насколько я могу судить, это потому, что исполняемые файлы python имеют вариант x86_64 внутри, в дополнение к двум версиям в моей библиотеке, и предпочитают работать в этом режиме. Есть ли какой-нибудь способ заставить исполняемый файл python запускать версию i386, а не x86_64, только для некоторых сценариев?
2 ответа
Если вы используете системный питон apple (на снежном барсе), вы можете выполнить его с помощью
arch -i386 python
например:
robin-mbp:~ $ arch -i386 /usr/bin/python2.6 -c "import sys; print sys.maxint"
2147483647
запустить интерпретатор в 32-битном режиме. Существует также переменная окружения, которую вы можете установить для системного питона (VERSIONER_PYTHON_PREFER_32_BIT).
Если это ваш собственный собранный питон, в настоящее время есть ошибка с выбором арки, но если вы пересобираете с помощью pythonw.c из этого тикета, он работает нормально.
Если вы не используете системный Python, вы можете пойти дальше и добавить строку в ~/.bash_profile
:
export VERSIONER_PYTHON_PREFER_32_BIT=yes