![更改档案中对象的名称](https://linux22.com/image/1530750/%E6%9B%B4%E6%94%B9%E6%A1%A3%E6%A1%88%E4%B8%AD%E5%AF%B9%E8%B1%A1%E7%9A%84%E5%90%8D%E7%A7%B0.png)
我公司有一些软件使用第三方库与 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