我正在尝试将unixODBC设置为连接到Netezza数据库,但是当我尝试使用isql进行连接时,我收到了“未定义的符号:SSL_connect”。
目前正在使用:CentOS 5.5,unixODBC 2.3.0(与2.2.11相同)。
我做了以下事情:
针对此符号的文件运行dltest报告“找不到文件”错误,这是我在尝试运行isql -v时通常会得到的,但是我更改了LD_DEBUG环境变量以获取其他调试信息,这导致了我来SSL_connect。
(仅供参考,export LD_DEBUG=files isql sospos
是我使用过的。)
有什么想法?这让我疯狂,因为看起来一切都在那里,但它仍然无法正常工作。最糟糕的是,我在10.10个月前在Ubuntu上设置了同样的东西,它没有任何问题。
更新:
首先,libnzodbc.so文件中的ldd看起来不错。所有依赖都已得到满足。
其次,我在文件中看到的唯一缺少的是en_US语言环境的libc.mo文件,因此我设置了一个指向en_GB的符号链接。不幸的是,它仍然抛出相同的错误,即使它看起来它找到了它正在寻找的其他所有lib。在我应该寻找的strace输出中还有其他什么吗?
更新2:
我目前看到的一个问题是isql正在ISO8859-1.so中寻找gconv_end,但该符号不存在。有趣的是,我的Ubuntu服务器VM上不存在该符号,并且isql正常工作。上面指定的两个版本的unixODBC我都有同样的问题。
更新3:
O.K。使用-d和-r选项重新运行ldd,是的,仍有问题。缺少每个SSL *符号。我猜这意味着我创建了一个指向错误文件的符号链接。任何人都知道哪个ssl库文件包含SSL_connect?
答案 0 :(得分:2)
O.K。弄清楚了。事实证明我创建的符号链接指向错误的库文件。最初我这样做了:
(/usr/lib/) ln -s libssl3.so libssl.so.4
我应该这样做:
(/usr/lib) ln -s ../../lib/libssl.so.0.9.8e libssl.so.4
答案 1 :(得分:0)
嗯,SSL_connect来自OpenSSL库。也许你可以尝试在isql上使用strace并发布它失败的部分(我怀疑)加载一个libssl。可能是您现有的ssl lib与驱动程序正在查找的内容不匹配。 ldd在驱动程序库上显示什么?
答案 2 :(得分:-1)
如果有人仍在查看类似问题,那么django-netezza软件包运行良好:https://github.com/msabramo/django-netezza