[sisyphus] Oracle 10g на ALT Linux Server 4.0

Damir Shayhutdinov =?iso-8859-1?q?lost404_=CE=C1_gmail=2Ecom?=
Чт Июл 26 17:05:54 MSD 2007


> >> Не находит объекты из библиотек libskgns.so и libsrvmhas10.so. Оба файла
> >> присутствуют в $ORACLE_HOME/lib. Причем если определить переменную
> >> USRLIBS="-lskgxns" то объекты этой библиотеки находятся, но вот с prsr_*
> >> из libsrvmhas10.so такое не прокатывает. Не могу понять в чем у них
> >> разница.
Очевидно, что дело все в --as-needed (Известная фича Сизифа и всего 4.0).

> >> Единственный способ который помог, так это дописать "-lskgxns
> >> -lsrvmhas10" в файл $ORACLE_HOME/lib/ldflags. К сожалению через
> >> переменную передать эти параметры мне так и не удалось.
> >>
> >
> > Попробуйте такой вариант:
> >
> > USRLIBS="-L$ORACLE_HOME/lib -lskgxns -lsrvmhas10"
> >
> >
> Ну если бы небыло этого -L то и skgxns не находилась. Тем не менее... на
> всякий случай попробовал. Вот результат. То что было в USRLIBS
> добавляется в конец этой гигантской строки.
>
>
> [oracle на clash lib]$ USRLIBS="-L$ORACLE_HOME/lib -lskgxns -lsrvmhas10"
> make -f ins_rdbms.mk ioracle
> chmod 755 /opt/oracle/product/10g/bin
>
>  - Linking Oracle
> rm -f /opt/oracle/product/10g/rdbms/lib/oracle
> gcc  -o /opt/oracle/product/10g/rdbms/lib/oracle
!!! Внимание: линкуется исполняемый файл под названием oracle !!!

> -L/opt/oracle/product/10g/rdbms/lib/ -L/opt/oracle/product/10g/lib/
[покусано непринципиальной мешанины символов]
> -Wl,-rpath,/opt/oracle/product/10g/lib -lm -L/opt/oracle/product/10g/lib
> -lskgxns -lsrvmhas10   `cat /opt/oracle/product/10g/lib/sysliblist` -ldl
> -lm -L/opt/oracle/product/10g/lib -lskgxns -lsrvmhas10
> -L/opt/oracle/product/10g/lib
> /opt/oracle/product/10g/lib//libcore10.a(lcd.o): In function `lcdprm':
> lcd.c:(.text+0x8e8): warning: the `gets' function is dangerous and
> should not be used.
> /opt/oracle/product/10g/lib//libclsra10.so: undefined reference to
> `prsr_release_asm_config'
!!! Внимание - символов не хватает у объекта libclsra10.so !!!
А это не тот объект, который сейчас линкуется. Типичная проблема
--as-needed. Товарищи Оракловцы ниасилили обеспечить правильный
порядок линковки.


Решение 1: каким-либо образом прописать в LDFLAGS флаг -Wl,--no-as-needed

Например, в $ORACLE_HOME/lib/ldflags.

Решение 2(невероятной сложности): исправить их Makefile и положить
куда-нибудь, чтобы все могли пользоваться.


Подробная информация о списке рассылки Sisyphus