64ビットおよび32ビットアプリケーションで使用される/etc/odbcinst.ini

64ビットおよび32ビットアプリケーションで使用される/etc/odbcinst.ini

/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つの項目があります。 1つは32ビット用、もう1つは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

ふとこんな気がしました。 2番目の項目を追加できますか"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=

しかし、現在私の設定が実際には機能していないことを認めなければなりません。 (しかし、私は以前は働いていました。これらの問題の多くの詳細を忘れていました。)

おすすめ記事