在OSX 10.6上导入Python Sybase模块时未定义的符号
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在OSX 10.6上导入Python Sybase模块时未定义的符号,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2397字,纯文字阅读大概需要4分钟。
内容图文
![在OSX 10.6上导入Python Sybase模块时未定义的符号](/upload/InfoBanner/zyjiaocheng/771/e38c93a56b044e89a2bc34964ef3eeb7.jpg)
我试图让python-sybase模块在OSX 10.6上工作,但我遇到了一些麻烦.
当我做
import Sybase
我明白了
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-sybase时,gcc命令似乎可以正确找到所有正确的库,但由于某些原因,在将sybasect.so安装到Python模块目录后,这些库似乎没有链接.
gcc命令是
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时,输出是:
$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)
我期待在那里看到Sybase库.
我对Mac上的链接有点新意.如何确保sybasect.so引用Sybase库?
解决方法:
固定它.
问题是我链接的各种Sybase库只有32位,但我在64位模式下运行Python.修复程序只是在32位模式下运行python.
我使用命令defaults write com.apple.versioner.python Prefer-32-Bit -bool yes,因为我对64位模式没有任何特殊需要.
内容总结
以上是互联网集市为您收集整理的在OSX 10.6上导入Python Sybase模块时未定义的符号全部内容,希望文章能够帮你解决在OSX 10.6上导入Python Sybase模块时未定义的符号所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。