我在一台装有Oracle 8.1.7客户端的AIX主机(A机)上编译的客户端程序,可以运行。Oracel的LIB目录在/oracle/app/product/8.1.7/lib下。在另外一台装有Oracle 8.1.7客户端的AIX主机(B机)上编译的客户端程序,可以运行。Oracle的LIB目录在/oracle/app/oracle/product/8.1.7/lib下。明显,中间多了个Oracle这样一个目录。我将A机的程序放在B机上运行,报错:无法加载 /oracle/app/product/8.1.7/lib/xxxx.lib。
我将B机的程序放在A机上运行,报错:无法加载 /oracle/app/oracle/product/8.1.7/lib/xxxx.lib。很明显,程序在搜索库文件的时候,搜索的是编译环境所在的操作系统中Oracle的lib目录,难道编译的时候Oracle的lib路径被存放在了可执行文件中?然后可执行程序根据这个目录来搜索?如果是这样,那岂不是Oracle客户端程序移植到其它相同操作系统上都很有问题?小弟不得其解,望高手指点!

解决方案 »

  1.   


    由于你的库文件路径不同,所以不可能完全不做修改进行迁移。用 env 命令查看你的环境变量修改参数 LD_LIBRARY_PATH 的值
      

  2.   

    谢谢你的回复,但,我不能仅仅修改库文件路径呀!安装Oracle的时候,路径就定了,我现在再修改这个路径,应该不行吧!把库文件的真实路径也修改了?
      

  3.   

    不知道你的程序能不能用$ORACLE_HOME这类环境变量的值,如果可以,那样就没有问题了
      

  4.   

    加载库,并不是我加载的。是我的程序运行的时候,就报这样一个错。我的程序使用的OCI来连接和使用Oracle的。并没有显式加载任何OCI库。