2013-04-01 5 views
0

У нас есть приложение , которое динамически связано с occi lib на Solaris. Теперь во время сборки мы связали его с occi клиента Oracle 10.2.0.4, но мы хотим, чтобы одна и та же сборка могла работать под клиентом Oracle 10G, а также с клиентом Oracle 11G. Но кажется, что occi не имеет обратной совместимости, так как имя динамического occi lib имеет версию.Перспективная совместимость приложения occi

например

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* 

Как вы можете видеть, когда мы запускаем наш OCCI приложение под Oracle 11G клиента он терпит неудачу, как нет libocci.so.10.1. Может ли кто-нибудь предложить решение?

ответ

0

У меня была такая же проблема некоторое время назад. После глубоких исследований единственным вариантом, который я нашел, было создание различных исполняемых версий для разных серверов ORACLE (соответственно, связанных с различными версиями библиотеки).

Конечно, это может быть сделано другим способом - время выполнения отличает, какая версия библиотеки вам нужна, установлены обе версии и динамически загружают правильную версию библиотеки, используя dlopen. Но я никогда не пробовал этого, потому что мне это действительно не нужно. Но это может сработать, поскольку обе версии библиотеки могут быть установлены на одном компьютере одновременно, не противоречив друг другу. Мне кажется.


Вот две ссылки, которые могут быть полезны:

первый показывает, что вам нужно иметь определенную версию библиотеки для конкретной среды. Моя проблема заключалась в том, что я должен был иметь occi 10.2.0.4 на RHEL5, который поставляется с libstdc++.so.6, а occi 10.2.0.4 зависит от libstdc++.so.5. только решение было писать на форуме OCCI в (вторая ссылка), где через некоторое время, они дали мне правильный билд, который был occi 10.2.0.4 построен с libstdc++.so.6 и не с libstdc++.so.5

К счастью, у вас не будет такие проблемы, но я решил, что это может быть полезно для вас.

Смежные вопросы