我有以下/etc/odbcinst.ini
文件
[root@]# cat /etc/odbcinst.ini
[FreeTDS]
Description=FreeTDS odbc driver
#Driver=/usr/lib/libtdsodbc.so.0
Driver=/usr/lib64/libtdsodbc.so.0
UsageCount=1
我有针对 64 位和 32 位编译的应用程序。
[root@]# ldd prog_32 | grep odbc
libodbc.so.2 => /lib/libodbc.so.2 (0xf7563000)
[root@]# ldd prog_64 | grep odbc
libodbc.so.2 => /lib64/libodbc.so.2 (0x00007f6087202000)
正如您可能注意到的那样,我在odbcinst.ini
驱动程序文件中有 2 个条目,一个用于 32 位,另一个用于 64 位。问题是,如果我运行为 64 位编译的程序,而驱动程序是 32 位,或者相反,我的程序将失败运行时出现错误
OTL error message = [unixODBC][Driver Manager]Can't open lib '/usr/lib/libtdsodbc.so.0' : file not found
所以我去更换驱动程序条目,odbcinst.ini
直到下次它会发生在我身上,这是相当频繁的。
有没有办法对 64 位应用程序使用 64 位驱动程序,对 32 位应用程序使用 32 位驱动程序,而无需注释掉配置文件中的条目?
答案1
我突然想到:你能添加第二个条目吗:"Driver64"
?
/etc.odbcinst.ini 中我的配置文件中的等效部分如下所示:
cat /etc/odbcinst.ini
[TDSdriver]
Description=only MSSQL, not for Sybase
Driver64=/usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup64=/usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
UsageCount=1
CPTimeout=5
CPReuse=
但我必须承认,目前我的设置并没有真正起作用,(但它曾经有效。我已经忘记了有关这些问题的许多细节)