首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OSX 10.6上导入Python Sybase模块时未定义的符号

在OSX 10.6上导入Python Sybase模块时未定义的符号
EN

Stack Overflow用户
提问于 2013-10-18 23:12:18
回答 1查看 790关注 0票数 4

我正在尝试让模块在OSX10.6上工作,但我遇到了一些麻烦。

当我这么做

代码语言:javascript
复制
import Sybase

我得到了

代码语言:javascript
复制
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "Sybase.py", line 15, in <module>
    from sybasect import *
ImportError: dlopen(/Library/Python/2.6/site-packages/python_sybase-0.40pre2-py2.6-macosx-10.6-universal.egg/sybasect.so, 2): Symbol not found: _blk_alloc
  Referenced from: /Library/Python/2.6/site-packages/python_sybase-0.40pre2-py2.6-macosx-10.6-universal.egg/sybasect.so
  Expected in: flat namespace
 in /Library/Python/2.6/site-packages/python_sybase-0.40pre2-py2.6-macosx-10.6-universal.egg/sybasect.so

我看了一下sybasect.so,果然,_blk_alloc是未定义的。函数位于已安装的Sybase的sybblk.dylib中,其包含的目录位于LD_LIBRARY_PATH中。

当我使用python setup.py build编译Python时,gcc命令似乎找到了所有正确的库,但由于某种原因,这些库在安装sybasect.so后似乎没有链接到sybasect.so模块dir。

gcc的命令是

代码语言:javascript
复制
gcc-4.2 -Wl,-F. -bundle -undefined dynamic_lookup -arch i386 -arch ppc -arch x86_64 build/temp.macosx-10.6-universal-2.6/blk.o build/temp.macosx-10.6-universal-2.6/databuf.o build/temp.macosx-10.6-universal-2.6/cmd.o build/temp.macosx-10.6-universal-2.6/conn.o build/temp.macosx-10.6-universal-2.6/ctx.o build/temp.macosx-10.6-universal-2.6/datafmt.o build/temp.macosx-10.6-universal-2.6/iodesc.o build/temp.macosx-10.6-universal-2.6/locale.o build/temp.macosx-10.6-universal-2.6/msgs.o build/temp.macosx-10.6-universal-2.6/numeric.o build/temp.macosx-10.6-universal-2.6/money.o build/temp.macosx-10.6-universal-2.6/datetime.o build/temp.macosx-10.6-universal-2.6/date.o build/temp.macosx-10.6-universal-2.6/sybasect.o -L/Applications/Sybase/System/OCS-15_0/lib -lsybblk -lsybct -lsybcs -lsybtcl -lsybcomn -lsybintl -lsybunic -o build/lib.macosx-10.6-universal-2.6/sybasect.so

-L/Applications/Sybase/System/OCS-15_0/lib的位置是正确的,该文件夹包含所有正确的..dylib。

当我运行otool时,输出是:

代码语言:javascript
复制
$ otool -L build/lib.macosx-10.6-universal-2.6/sybasect.so
build/lib.macosx-10.6-universal-2.6/sybasect.so:
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)

我本来想在里面看到西贝斯的。

我对Mac上的链接有点陌生。如何确保sybasect.so引用Sybase库?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-21 20:40:57

修好了。

问题是,我链接到的各种Sybase库仅为32位,但我在64位模式下运行Python。修复程序只是在32位模式下运行python。

我使用了命令defaults write com.apple.versioner.python Prefer-32-Bit -bool yes,因为我不需要64位模式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19460413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档