环境:AIX 64位
LIBPATH=/export/home/unixuser/sqllib/lib64:/usr/lib:/lib:/export/home/oracle/11.1.0.6_client/lib:/home/eng-sm/unixuser/claire/test/perl/unixodbc_install/lib
Q20F是一个DB2数据库,我在执行unixODBC isql时出现下面错误
unixuser\@dsliaa05 # > ./isql -v Q20F
[01000][unixODBC][Driver Manager]Can't open lib '/export/home/unixuser/sqllib/lib64/libdb2.a' : 0509-022 Cannot load module /export/home/unixuser/sqllib/lib64/libdb2.a.
0509-103 The module has an invalid magic number.
[ISQL]ERROR: Could not SQLConnect
我看网上也有类似错误,他们通过修改环境变量LIBPATH,将它指向64位lib库即可。我的LIBPATH已经是执行64位lib了,不知道为什么还不行。
------解决方案--------------------------------------------------------
有人知道吗?
------解决方案--------------------------------------------------------
一般从既有系统移植时,会因为编译出来的程序是32位,而动态库是64位的,刚才遇到这种情况。
可以用 file 命令查看程序是否64位
两种解决方法:
1.在 cc 编译参数增加 -q64 编译成64位的程序。
2.如果数据库有32位动态库的话,在.profile中增加:
LIBPATH=$ORACLE_HOME/.../lib32
LD_LIBRARY_PATH=$ORACLE_HOME/.../lib32
程序需要的其它数据库动态库由 lib 指向 lib32