簡體   English   中英

occi應用程序的前向兼容性

[英]forward compatibility of occi application

我們有一個OCCI應用程序,該OCCI程序動態鏈接到Solaris上的occi lib。 現在,在構建過程中,我們將其與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區分所需的lib版本,已安裝的兩個版本並動態加載正確的庫版本。 但是我從來沒有嘗試過,因為我實際上並不需要它。 但是它可以工作,因為兩個庫版本可以同時安裝在同一台計算機上,而不會互相沖突。 聽起來對我來說可能。


這是兩個鏈接,可能會有所幫助:

第一個顯示,您需要具有針對特定環境的特定庫版本。 我的問題是,我必須在libstdc++.so.6隨附的RHEL5上安裝occi 10.2.0.4 ,而occi 10.2.0.4依賴於libstdc++.so.5 唯一的解決方案是在OCCI論壇中(第二個鏈接)進行編寫,一段時間后,他們為我提供了正確的構建,它是使用libstdc++.so.6而不是libstdc++.so.5構建的occi 10.2.0.4 libstdc++.so.5

幸運的是,您不會遇到此類問題,但是我決定,這可能對您有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM