我公司有一些软件使用第三方库与 Oracle 数据库交互。它已经很长时间没有经过测试了,现在我们需要验证它是否正常工作,我们无法让第三方库在我们的 AIX 环境中连接到 Oracle,但它在 Windows 和 Linux 中可以工作。
我们的软件是64位的,第三方的也是64位的,Oracle客户端也是64位的。
我有第三方代码,但仅用于调试目的,而不是用于生产/发布。
调用 dlopen 加载主 Oracle 存档时,出现此错误:0509-022 无法加载模块 /home/OracleTest/libclntsh.a(shr_64.o)。0509-152 在存档中未找到成员 shr_64.o
我在互联网上找到的所有内容都表明 (shr_64.o) 适用于 64 位对象,而 (shr.o) 适用于 32 位。
但是,当检查档案时,我发现 64 位档案有一个 shr.o 而不是 shr_64.o
bash-4.3$ ar -X64 -t -v libclntsh.a rwxr-xr-x 94110/42424 61808612 2014 年 10 月 30 日 17:32 shr.o
第三方代码在 shr_64.o 中硬编码为 64 位。如果我将其更改为 shr.o,代码将按预期运行。
因为我无法更改第三方代码,所以我正在寻找一种方法来更新档案中的对象,将其命名为 shr_64.o 而不是 shr.o