|
|
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
Имеется: SunOS s2 5.9 Generic_112233-12 sun4u sparc SUNW,Ultra-60 IBM Informix Dynamic Server Version 10.00.FC3 Пишу внешнюю функцию на C /************************************************************* * * u d r 0 . c * *************************************************************/ #include "mi.h" /************************************************************* * * l i b _ t m p t e s t * * В о з в р а щ а е т п а р а м е т р * /*************************************************************mi_integer lib_tmptest_1( mi_integer p_seed ) { mi_integer x_rand; x_rand = p_seed; return x_rand; } //-------------------------------------- собираю её в библиотеку udrlib0.so с помощью GNU Make version 3.79.1 gcc version 3.4.2 Makefile: //-------------------------------------- STRIP=/usr/ccs/bin/strip CFLAGS=-DMI_SERVBUILD -I/usr/include -I/usr/include/sys \ -I/usr/informix/incl/public \ -I/usr/informix/incl/dmi -I/usr/informix/incl -g -m64 SOFLAGS=-dy -G -Bsymbolic -m64 INFORMIXLIB=-L/usr/informix/lib/esql `esql -libs`\ -L/usr/informix/lib/dmi -lifdmi OBJSO=udr0.o all: udrlib0.so udrlib0.so: $(OBJSO) $(LD) $(SOFLAGS) $(INFORMIXLIB) -lrt -o$@ $(OBJSO) # $(STRIP) $@ clean: $(RM) *.o udrlib0.so //-------------------------------------- file udrlib0.so udrlib0.so: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped Регистрирую в БД на informix CREATE FUNCTION lib_tmptest( INT ) RETURNING INT WITH ( PARALLELIZABLE ) EXTERNAL NAME "/usr/informix/lib/test/udrlib0.so(lib_tmptest)" LANGUAGE C; на директорию где лижит права такие drwxr-xr-x 3 informix informix 512 Mar 27 00:21 test /usr/informix/lib/test/ на саму библиотеку ставлю права -rwxr-xr-x 1 informix informix 5592 Mar 27 00:16 udrlib0.so при попытке позвать функцию execute function lib_tmptest( 100 ); получаю сообщение об ошибке "-9793: User Defined Routine (lib_tmptest) module load failed." а в online.log запись 12:18:49 Loading Module </usr/informix10/lib/rap/udrlib0.so> 12:18:49 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory 12:18:49 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so> Пробовал ставить права на udrlib0.so 700, 750, 550, 500, 640, 400>:0 , регистриовать и размещать не под пользователем informix. Ничего не меняется, всё та же ошибка. Если библиотеку удалить из того места которе указано при регистрации, выдаёт сообщения: "-9793: User Defined Routine (lib_tmptest) module load failed." и в online.log 12:25:53 Loading Module </usr/informix/lib/rap/udrlib0.so> 12:25:53 (2): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load reason: Cannot access library file 12:25:53 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so> если подложить вместо библиотечного файла что то левое с тем же именем 12:28:11 Loading Module </usr/informix/lib/test/udrlib0.so> 12:28:11 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load reason: ld.so.1: oninit: fatal: /usr/informix/lib/rap/udrlib0.so: unknown file type 12:28:11 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so> На клиенте в обих случаях -9793 ошибка. Вроде бы всё логично. Из всего что я нашел в документации про необходимые права сказано 750, и важно что бы не было w прав для other, а informix мог читать. Правда в некотоых статьях на IBM-овском сайте видел указание ставить права 550. Но как уже наисал это не помогает. Пробовал менять нововведённый параметр IFX_EXTEND_ROLE 0 # To control the usage of EXTEND role. В onconfig. Параметр работает, но ошибки остались все те же. Не сталкивался ли кто с подобным проблемами? Куда копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 12:50 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
/*************************************************************mi_integer lib_tmptest_1( mi_integer p_seed ) { mi_integer x_rand; x_rand = p_seed; return x_rand; } CREATE FUNCTION lib_tmptest( INT ) RETURNING INT WITH ( PARALLELIZABLE ) EXTERNAL NAME "/usr/informix/lib/test/udrlib0.so(lib_tmptest)" LANGUAGE C; Попробуй точку входа в библиотеку сделать такое же , как название функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 14:51 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
У меня не богатый опыт с UDR, но он именно на Solaris, правда X86. Именно этот код ошибки у меня был, когда на тестовом серваке вместо 8-ки поставили 10-ку. И там и там используется 9.21UC2. Для 8-ки синтаксис получился таким: CREATE PROCEDURE "informix".do_syslog(priority integer, message lvarchar) EXTERNAL NAME "/usr/informix/lib/logger.so/(do_syslog)" LANGUAGE C END PROCEDURE; А вот на 10-ке потребовалось так: "/usr/informix/lib/logger.so(do_syslog)" Причем на 8-ке в такой нотации не работает. От чего зависит не копал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 19:10 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
2 лшк mi_integer lib_tmptest_1( mi_integer p_seed ) ^^^^ тут я конечно ошибочную версию запостил Должно быть так mi_integer lib_tmptest( mi_integer p_seed ) Просто экспериментировал, но похоже до разрешения функции внутри библиотеки дело не доходит. Обламывается сам Informix при попытке грузить библиотеку 2 Daugava попробовал поменять синтаксис процедуры регистрации, ничего не поменялось. У меня на Informix Dynamic Server 2000 Version 9.21.UC5 (32bit) , SunOS i 5.9 Generic_112233-12 sun4u sparc SUNW,Sun-Fire-V240 (64bit) SunOS s1 5.8 Generic_108528-13 sun4u sparc SUNW,Ultra-60 (64bit), Informix Dynamic Server 2000 Version 9.20.UC2/9.21.UC5 (32bit) работает На Linux g2 2.6.10-1.770_FC3smp #1 SMP EST 2005 i686 i686 i386 GNU/Linux (32bit) IBM Informix Dynamic Server Version 9.40.UC2 (32bit) SunOS s2 5.9 Generic_112233-12 sun4u sparc SUNW,Ultra-60 IBM Informix Dynamic Server Version 10.00.FC3 не работает, пичём ошибка на не работающих платформах одинаковая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2006, 16:43 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
А если положить в каталог /usr/lib/ тогда чего? ----------------------------------------------------------- Решительный шаг вперед -- результат хорошего пинка сзади ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2006, 16:50 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
ысё то же самое:( Не грузится с теми же сообщениями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 09:25 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
Я ничего не знаю про UDR. Перечитал первое сообщение: 12:18:49 Loading Module </usr/informix10/lib/ rap /udrlib0.so> 12:25:53 Loading Module </usr/informix/lib/ rap /udrlib0.so> reason: ld.so.1: oninit: fatal: /usr/informix/lib/ rap /udrlib0.so: unknown file type Причем тут каталог rap, вроде речь про test? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 09:36 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
Если саппорта нет, можно попробовать в cdi написать: "Купил я 9.21, работал, работал, решил купить 10-ку, попробовал триал, а он глючит, зачем сломали UDR?". ----------------------------------------------------------------------------------------------------------------------------------------- нужно делать то что нужно, а то что не нужно -- делать не нужно (перефразируя В-Пуха). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 09:47 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
конечно должно быть так 12:18:49 Loading Module </usr/informix10/lib/test/udrlib0.so> 12:18:49 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory 12:18:49 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 10:46 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
tigra4x4конечно должно быть так 12:18:49 Loading Module </usr/informix10/lib/test/udrlib0.so> 12:18:49 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory 12:18:49 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so>Я не понял, вы нам копипаст показываете? Или придумываете на ходу? 12:18:49 Loading Module </usr/ informix10 /lib/test/udrlib0.so> 12:18:49 (4): The C Language Module </usr/ informix /lib/test/udrlib0.so> can't load reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory 12:18:49 (-1): ERROR: Loading Module </usr/ informix /lib/test/udrlib0.so> Опять каталоги разные. Аа, они и в 4-м посте тоже разные были. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 10:50 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
tigra4x4 Куда копать? Начинаем отсюда tigra4x4 #include "mi.h" Потом смотрим сюда tigra4x4 INFORMIXLIB=-L/usr/informix/lib/esql `esql -libs`\ -L/usr/informix/lib/dmi -lifdmi потом сюда tigra4x4 reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory потом Код: plaintext 1. Потом закидывыем ссылку на библиотеку libifsql.so в директорию системных библиотек. ИХМО должно помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 11:52 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
tigra4x4 INFORMIXLIB=-L/usr/informix/lib/esql `esql -libs`\ -L/usr/informix/lib/dmi -lifdmi Наверное следующей ошибкой буде невозможность загрузить какую либо библиотеку из idmisXXa.so libifdmi.so libthdmi.so idmitXXa.so Они у вас участвуют в линковке Но принцип решения проблемы тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 12:02 |
|
||
|
UDR load problem
|
|||
|---|---|---|---|
|
#18+
Про возможность подгрузить используемые скомпилированным модулем библиотеки смотрели, переменную LD_LIBRARY_PATH и LD_LIBRARY_PATH_64 под экаунтом informix (сервер то под ним работает, если я чего правильно понимаю) выставляли $ ldd udrlib0.so libifsql.so => /usr/informix/lib/esql/libifsql.so libifasf.so => /usr/informix/lib/libifasf.so libifgen.so => /usr/informix/lib/esql/libifgen.so libifos.so => /usr/informix/lib/esql/libifos.so libifgls.so => /usr/informix/lib/esql/libifgls.so libnsl.so.1 => /usr/lib/64/libnsl.so.1 libsocket.so.1 => /usr/lib/64/libsocket.so.1 libdl.so.1 => /usr/lib/64/libdl.so.1 libm.so.1 => /usr/lib/64/libm.so.1 libifglx.so => /usr/informix/lib/esql/libifglx.so libifdmi.so => /usr/informix/lib/libifdmi.so librt.so.1 => /usr/lib/64/librt.so.1 libc.so.1 => /usr/lib/64/libc.so.1 libmp.so.2 => /usr/lib/64/libmp.so.2 libaio.so.1 => /usr/lib/64/libaio.so.1 libmd5.so.1 => /usr/lib/64/libmd5.so.1 /usr/platform/SUNW,Ultra-60/lib/sparcv9/libc_psr.so.1 /usr/platform/SUNW,Ultra-60/lib/sparcv9/libmd5_psr.so.1 ^^^ это под informix выполненная команда Про неверные пути в предыдущих постах: 12:18:49 Loading Module </usr/informix/lib/test/udrlib0.so> 12:18:49 (4): The C Language Module </usr/informix/lib/test/udrlib0.so> can't load reason: ld.so.1: oninit: fatal: libifsql.so: open failed: No such file or directory 12:18:49 (-1): ERROR: Loading Module </usr/informix/lib/test/udrlib0.so> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2006, 09:14 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=44&tid=1608707]: |
0ms |
get settings: |
10ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 432ms |

| 0 / 0 |
