我试图设置unixODBC连接到Netezza数据库,但是当我尝试使用isql进行连接时,出现“Undefined symbol:SSL_connect”。unixodbc和netezza ODBC驱动程序问题(未定义符号:SSL_connect)
当前使用:CentOS 5.5,unixODBC 2.3.0(与2.2.11相同)。
我也做了以下内容:
- 根据与ODBC驱动程序附带的readme.txt配置LD_LIBRARY_PATH,ODBCINI和NZ_INI_FILE_PATH。
- 确保使用ldd命令加载所有库并为libssl和libcrypto设置符号链接。
- 更新了/etc/ld.so.conf文件以确保netezza驱动程序路径已加载。
- 使用nm来确认SSL_connect符号在驱动程序中。
运行dltest对这个符号的文件报告了“找不到文件”的错误,这是我通常会得到,当我尝试运行ISQL -v,但我改变了LD_DEBUG环境变量,以获得额外的调试信息,这导致我SSL_connect。
(仅供参考,export LD_DEBUG=files isql sospos
是我用过的东西。)
有什么想法?这让我疯狂,因为它看起来一切都在,但它仍然不起作用。最糟糕的部分是,我在Ubuntu 10.10月前设置了相同的东西,它没有任何问题。
UPDATE:
首先,在libnzodbc.so文件LDD看起来不错。所有的依赖都得到了满足。
其次,我在文件中只能看到缺少的是en_US语言环境的libc.mo文件,所以我建立了一个符号链接到en_GB。不幸的是,它仍然抛出相同的错误,即使它看起来像找到了它所需要的所有其他库。在我应该寻找的strace输出中是否还有其他内容?
更新2:
我目前看到的问题是,ISQL寻找在ISO8859-1.so gconv_end,但是该符号不存在。有趣的是,这个符号在我的Ubuntu服务器虚拟机上不存在,并且isql工作正常。我上面指定的两个版本的unixODBC都有相同的问题。
UPDATE 3:
O.K.用-d和-r选项重新运行ldd,是的,仍然存在问题。每个SSL *符号都缺失。我猜这意味着我创建了一个错误文件的符号链接。任何人都知道哪个ssl库文件包含SSL_connect?
谢谢。我完全忘了strace。奇怪的是,它看起来像错误可能不是,至少直接,ssl相关。当我获得更多信息时,我会发布信息。 – blockcipher