odbc - unixodbc 驱动程序管理器在安装时无法打开指定的库

标签 odbc archlinux unixodbc openedge progress-db

我正在使用 ArchLinux,我正在尝试安装 OpenEdge 进度驱动程序,以便我可以通过 PHP 访问它。我已经安装了 unixodbc 包和驱动程序,但是当我通过 isql 或 PHP 测试连接时,我得到了同样的错误......

# isql -3 SUBS2A
[01000][unixODBC][Driver Manager]Can't open lib '/usr/dlc/odbc/lib/pgoe1023.so' : file not found
[ISQL]ERROR: Could not SQLConnect

搞砸的是“/usr/dlc/odbc/lib/pgoe1023.so”目前存在,我什至从“/usr/dlc”符号链接(symbolic link)它。

以下是我的 .ini 文件...

odbc.ini
[SUBS2A]
Description = ODBC Driver for Progress
Driver = /usr/dlc/odbc/lib/pgoe1023.so
FileUsage = 1

odbcinst.ini(我删除了一些凭据,因为它无关紧要)
[ODBC-test]
Description = SUBS2A
Driver = SUBS2A
Server = 192.168.1.2
Port = 4000
APILevel=1
ConnectFunctions=YYN
CPTimeout=60
DriverODBCVer=03.60
FileUsage=0
SQLLevel=0
UsageCount=1
ArraySize=50
DefaultLongDataBuffLen=2048
DefaultIsolationLevel= READ COMMITTED
StaticCursorLongColBuffLen=4096

编辑添加更多信息...

它们似乎都是 32 位的,但我不知道我在做什么。
[root@Crux etc]# file /usr/bin/isql
/usr/bin/isql: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.27, BuildID[sha1]=0xd1bc16c119                          bb5cad6fea9e2a9abc1d06794a2775, stripped
[root@Crux etc]# file /usr/dlc/odbc/lib/pgoe1023.so
/usr/dlc/odbc/lib/pgoe1023.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

看来它确实缺少一些依赖项......
[root@Crux lib]# ldd pgoe1023.so
        linux-gate.so.1 =>  (0xb77c2000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7499000)
        librt.so.1 => /lib/librt.so.1 (0xb7490000)
        libpgicu23.so => not found
        libdl.so.2 => /lib/libdl.so.2 (0xb748b000)
        libstdc++-libc6.2-2.so.3 => not found
        libm.so.6 => /lib/libm.so.6 (0xb745e000)
        libc.so.6 => /lib/libc.so.6 (0xb72bc000)
        /lib/ld-linux.so.2 (0xb77c3000)

更新

我将“libpgicu23.so”复制到/usr/lib,它解决了这个问题,但我仍然需要“libstdc++-libc6.2-2.so.3”,但是当我从互联网上抓取一个时,它说“加载时出错共享库:/usr/lib/libstdc++-libc6.2-2.so.3:ELF 文件操作系统 ABI 无效”

实际上,我什至创建了从“libstdc++-libc6.2-2.so.3”到“libstdc++.so”的符号链接(symbolic link),但即使它通过 ldd 解决了问题,当我查询 isql..

isql: symbol lookup error: /usr/dlc/odbc/lib/pgoe1023.so: undefined symbol: __builtin_vec_new



我从来没有在 *nix 机器上安装 odbc,但我们在 windows 机器上做了同样的事情,它工作得很好。任何输入表示赞赏。

最佳答案

检查 unixODBC 和您的驱动程序是否具有相同的体系结构,即运行:

which isql
file xxx (whatever came back from above)
file /usr/dlc/odbc/lib/pgoe1023.so

它们都应该是 32 位或 64 位。 64 位 unixODBC 不能使用 32 位驱动程序,反之亦然。

你不应该需要那个符号链接(symbolic link)。

在/usr/dlc/odbc/lib/pgoe1023.so 上运行 ldd 以确保找到所有依赖项。

检查/usr/dlc/odbc/lib/pgoe1023.so 是否可执行。

顺便说一句,我认为你的标签是错误的,因为你的 odbc.ini 文件内容应该是 odbcinst.ini ,反之亦然。

关于odbc - unixodbc 驱动程序管理器在安装时无法打开指定的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10318463/

相关文章:

php - pdo_odbc驱动程序问题

php - 连接到 MSSQL 数据库时出现问题

odbc - 从 Teradata 12 升级到 Teradata 13 后出错....terasso.dll

linux - 如何在 Emacs 中按感叹号键?

pyodbc - 使用pyodbc连接到FileMaker Server

odbc - MySQL ODBC 3.51 - 如何从 ODBC GUI 禁用连接池?

python - ImportError : libtk8. 6.so: 无法打开共享对象文件: 没有那个文件或目录

linux - 为什么方法 main.replay() 没有在 Java 中执行?但完全相同的代码在 Fedora 中有效,但在 Archlinux 中无效

tsql - CentOS 6.7 和 Windows MSSQL 连接 - FreeTDS 和 PHP

c - Linux 上的 gcc ODBC 未链接