/etc/odbcinst.ini usado pelos aplicativos de 64 e 32 bits

0

Eu tenho o seguinte arquivo /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

Eu tenho aplicativos compilados para 64 e 32 bits.

[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)

Como você provavelmente notou que eu tenho 2 entradas no arquivo odbcinst.ini para o Driver, uma para 32 bits e outra para 64. O problema é que se eu executar o programa compilado para 64 bits enquanto o Driver tiver 32 bits ou outro caminho ao redor do meu programa falha em tempo de execução com o erro

OTL error message = [unixODBC][Driver Manager]Can't open lib '/usr/lib/libtdsodbc.so.0' : file not found

Então eu vou e substituo a entrada do Driver no odbcinst.ini até a próxima vez que isso acontecer comigo, o que é bastante frequente.

Existe uma maneira de usar o drive de 64 bits para aplicativos de 64 bits e o driver de 32 bits para o aplicativo de 32 bits sem precisar comentar a entrada no arquivo de configuração?

    
por e271p314 15.02.2018 / 10:13

1 resposta

0

Na minha cabeça: Você pode adicionar uma segunda entrada: "Driver64" ?

A seção equivalente no meu arquivo de configuração em /etc.odbcinst.ini é assim:

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=

Mas devo confessar que atualmente minha configuração não funciona realmente (mas costumava ser. Esqueci muitos detalhes sobre esses problemas)

Espero que isso ajude

    
por 15.02.2018 / 11:13