occi应用程序的前向兼容性
forward compatibility of occi application
我们有一个OCCI
应用程序动态链接到Solaris
上的occi
库。现在在构建期间,我们将其与Oracle 10.2.0.4
客户端的occi
链接,但我们希望相同的构建能够在Oracle 10G客户端以及Oracle 11G客户端下运行。但是occi
似乎不向后兼容,因为动态occi
lib的名称中有一个版本。
如
md1sisun26:/tools/oracle/10.2.0.4/lib->dump -Lv libocci.so
libocci.so:
**** DYNAMIC SECTION INFORMATION ****
.dynamic:
[INDEX] Tag Value
[1] INIT 0xc6110
[2] FINI 0xc62b8
[3] SONAME libocci.so.10.1
[4] RUNPATH TLD_GLOBAL
[5] RPATH TLD_GLOBAL
[6] HASH 0xe8
[7] STRTAB 0x10488
[8] STRSZ 0x1fb42
[9] SYMTAB 0x41e8
[10] SYMENT 0x18
[11] CHECKSUM 0x25a3
[12] PLTSZ 0x4c80
[13] PLTREL 0x7
[14] JMPREL 0x3c450
[15] RELA 0x2ffd0
[16] RELASZ 0x11100
[17] RELAENT 0x18
[18] REGISTER 0x72
[19] REGISTER 0x86
[20] FEATURE_1 PARINIT
[21] FLAGS 0
[22] FLAGS_1 [ DISPRELDNE ]
[23] PLTGOT 0x1eb500
md1sisun26:/tools/oracle/10.2.0.4/lib->ls -lrt libocci.so
lrwxrwxrwx 1 oracle 15 Aug 10 2010 libocci.so -> libocci.so.10.1*
可以看到,当我们在Oracle 11G客户端上运行occi应用程序时,由于没有libocci.so.10.1
,它失败了。有人能提出解决办法吗?
我以前也遇到过同样的问题。经过深入的研究,我发现唯一的选择是为不同的ORACLE服务器构建不同的可执行版本(分别与不同版本的库链接)。
当然,这可以用另一种方式来完成——运行时区分你需要的库的版本,安装两个版本,并使用dlopen
动态加载正确版本的库。但我从未尝试过,因为我实际上并不需要它。但它可以工作,只要两个库版本可以同时安装在同一台机器上,而不会相互冲突。
这里有两个链接,可能会有帮助:
- 如何与特定库链接(g++;libstdc + + . so。5、libstdc++.so。6)
- https://forums.oracle.com/forums/thread.jspa?messageID=4545221
第一个显示,您需要针对您的特定环境拥有特定的库版本。我的问题是,我必须在RHEL5上有occi 10.2.0.4
, libstdc++.so.6
自带,而occi 10.2.0.4
依赖于libstdc++.so.5
。唯一的解决方案是在OCCI的论坛(第二个链接)中编写,过了一会儿,他们给了我正确的构建,这是occi 10.2.0.4
与libstdc++.so.6
构建而不是libstdc++.so.5
幸运的是,您不会遇到这样的问题,但我认为,这可能对您很有用。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- C++ XE 5 应用程序和C++生成器 5 dll 兼容性
- occi应用程序的前向兼容性