【问题标题】:How to build zookeeper/zkpython in 32bit mode in Mac OS X 10.7 Lion?如何在 Mac OS X 10.7 Lion 中以 32 位模式构建 zookeeper/zkpython?
【发布时间】:2012-01-13 10:27:20
【问题描述】:

我应该在 32 位模式下使用 32 位 Python(由于 oracle instantclient-10.2.0.4,它在 Mac OS X 中的 64 位中存在段错误,但在 32 位中有效)。到目前为止一切都很好,直到我找到了动物园管理员。实际上,ZooKeeper Python 绑定 (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:警告:忽略文件 ../../..//src/c/.libs//libzookeeper_mt.dylib,文件是为不受支持的文件格式构建的,该文件格式不是被链接的体系结构 (i386)

所以,我尝试将 zookeeper 客户端本身设置为 32 位。 但是无论我尝试什么,我都无法在 32 位模式下构建它:libzookeeper_mt.2.dylib 始终是 64 位(我尝试了 ARCH_FLAGS ="-arch i386"、configure --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 架构,所以我无法使用“lipo”提取这个 i386 版本。

所以,主要问题是:如何使 ZooKeeper python 绑定在 64 位 Mac OS X Lion (10.7) 中与 32 位 Python 一起使用?

第二个问题是:如何在 64bit Mac OS X Lion 10.7 中以 32bit 模式构建 ZooKeeper?

【问题讨论】:

    标签: python macos osx-lion apache-zookeeper


    【解决方案1】:

    我自己解决了这个问题。这是解决方案:http://blog.nolar.info/building-32-bit-zookeeper-python-bindings-in-64-bit-mac-os-x/(简而言之,破解您的 Makefile 以在 CC 定义中添加“-arch i386”)。

    【讨论】:

      【解决方案2】:

      CFLAGS 传递给配置脚本:

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

      【讨论】:

        猜你喜欢
        • 2012-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多