Как собрать zookeeper / zkpython в 32-битном режиме в Mac OS X 10.7 Lion? - PullRequest
1 голос
/ 05 декабря 2011

Мне следует использовать 32-битный Python в 32-битном режиме (из-за oracle instantclient-10.2.0.4, который дает сбой в 64-битной версии в Mac OS X, но работает в 32-битной).Пока все было хорошо, пока я не получил зоопарка.На самом деле, ZooKeeper Python bindings (zkpython).

Я попытался сделать zkpython 32-битным, , сохранив при этом сам клиент 64-битным, как по умолчанию.Но в этом случае я получаю сообщение об ошибке при импорте:

Python 2.6.7 (r267:88850, Jul 31 2011, 19:30:54) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
>>> import zookeeper
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: dlopen(./zookeeper.so, 2): Symbol not found: _ZOO_ASSOCIATING_STATE
  Referenced from: /Users/nolar/Downloads/zoo/zookeeper.so
  Expected in: flat namespace
 in /Users/nolar/Downloads/zoo/zookeeper.so

То же самое для Python 2.7 (и 2.6, и 2.7 здесь 32-битные, а sys.maxint == 2147483647).И я предполагаю, что здесь нужен 32-битный клиент zookeeper, так как при компиляции zkpython он говорит только одно значимое предупреждение:

ld: warning: игнорирование файла ../../..//src/c/.libs // libzookeeper_mt.dylib, файл был создан для неподдерживаемого формата файлов, который не связан с архитектурой (i386)

Итак, Я попытался сделать клиент zookeeper 32-битным. Но что бы я ни пытался, я не могу собрать его в 32-битном режиме: libzookeeper_mt.2.dylib всегда 64-битный (я пробовал ARCH_FLAGS = "- arch i386", настраиваю --build = i386 --host = i386, arch -i386…и т. д. .dylib всегда 64-битный).

$ file libzookeeper_mt.2.dylib 
libzookeeper_mt.2.dylib: Mach-O 64-bit dynamically linked shared library x86_64

И самое страшное здесь то, что в нем нет встроенной арки i386, поэтому я не могу извлечь эту версию i386 с помощью "lipo".

Итак, основной вопрос: как заставить привязки Python ZooKeeper работать с 32-битным Python в 64-битной Mac OS X Lion (10.7)?

Вторичный вопрос: Как собрать ZooKeeper в 32-битном режиме в 64-битной Mac OS X Lion 10.7

Ответы [ 2 ]

3 голосов
/ 10 декабря 2011

Я сам исправил это. Вот решение: http://blog.nolar.info/building-32-bit-zookeeper-python-bindings-in-64-bit-mac-os-x/ (в двух словах, взломайте ваш Makefile, чтобы добавить туда "-arch i386" к определению CC).

0 голосов
/ 06 декабря 2011

Передача CFLAGS в скрипт настройки:

export CFLAGS="-pipe -O2 -arch i386"
./configure …
...