Не загружаются UDF на FB 2 RC1 Superserver - Fedora Core 5
Модераторы: kdv, Alexey Kovyazin
-
- Сообщения: 9
- Зарегистрирован: 16 апр 2006, 17:42
Не загружаются UDF на FB 2 RC1 Superserver - Fedora Core 5
Здравствуйте все!
Проблема:
Не загружаются мои самописные UDF на FB 2 RC1 Superserver - Fedora Core 5.
Звучит, конечно, по-ламерски, но подождите...
Итак, есть база данных и библиотека UDF для этой базы (~5 функций)
Всё работает замечательно под FB 1.5 SS Linux (Slackware).
Решил попробывать FB2 и заодно Fedora 5.
Поставил FB2 (если бы не коференция на google, умучался бы искать пакет с libstdc++.so.5 без которого FB2 не работает), перекопировал myudf.so.
Не компилируются SP т.к. "не найденны точки входа или библиотеки" для моих UDF (а где обещанное улучшение диагностики ошибок?).
Перекомпилирую myudf.cpp - "не найденны точки входа или библиотеки". Ладно, думаю, проблема в разных версиях libstdc++.
Посколько используемые функции - чистый C, выкидываю всё лишнее, делаю myudf.c, компилирую - таже ошибка.
Проверяю поставляемые в комлекте UDF - всё работает!
Пишу тестовую UDF из одной функции - работатет!
Оставляю одну ф-цию в myudf.c - работает!
Две - работатет.
Три - не работает НИ ОДНА UDF из всей библиотеки!
Причём всё с той-же ошибкой - "не найденны точки входа или библиотеки".
Здраво рассуждая - так не бывает.
У кого есть идеи?
Могу выслать myudf.c/myudf.so.
К разработчикам:
Нельзя ли сделать расширенную диагностику при ошибках UDF?
Проблема:
Не загружаются мои самописные UDF на FB 2 RC1 Superserver - Fedora Core 5.
Звучит, конечно, по-ламерски, но подождите...
Итак, есть база данных и библиотека UDF для этой базы (~5 функций)
Всё работает замечательно под FB 1.5 SS Linux (Slackware).
Решил попробывать FB2 и заодно Fedora 5.
Поставил FB2 (если бы не коференция на google, умучался бы искать пакет с libstdc++.so.5 без которого FB2 не работает), перекопировал myudf.so.
Не компилируются SP т.к. "не найденны точки входа или библиотеки" для моих UDF (а где обещанное улучшение диагностики ошибок?).
Перекомпилирую myudf.cpp - "не найденны точки входа или библиотеки". Ладно, думаю, проблема в разных версиях libstdc++.
Посколько используемые функции - чистый C, выкидываю всё лишнее, делаю myudf.c, компилирую - таже ошибка.
Проверяю поставляемые в комлекте UDF - всё работает!
Пишу тестовую UDF из одной функции - работатет!
Оставляю одну ф-цию в myudf.c - работает!
Две - работатет.
Три - не работает НИ ОДНА UDF из всей библиотеки!
Причём всё с той-же ошибкой - "не найденны точки входа или библиотеки".
Здраво рассуждая - так не бывает.
У кого есть идеи?
Могу выслать myudf.c/myudf.so.
К разработчикам:
Нельзя ли сделать расширенную диагностику при ошибках UDF?
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
-
- Сообщения: 9
- Зарегистрирован: 16 апр 2006, 17:42
Нет там вообще никаких библиотекDimitry Sibiryakov писал(а):Возможно, твоя библиотека использует какие-то другие библиотеки которые как раз и не найдены. Типичный пример: rfunc требует libgds, которого у FB2 нет.
Всё до неприличия элементарно.
Может Вы попробуете?
http://www.imajet.net/bad_udf/bad_udf.tar.gz
Вот это не работает. Убираю последнюю функцию - работает.
Для Линукса используетсяDimitry Sibiryakov писал(а): Расширить диагностику... Это вряд ли. ОС на dload() дает не так уж много кодов ошибок.
Код: Выделить всё
void *dlopen(const char *filename, int flag);
было бы гораздо более информативно чемError: myudf.so: undefined symbol: ib_util_malloc
Но это так, мысли в слухmodule name or entrypoint could be found
-
- Сообщения: 9
- Зарегистрирован: 16 апр 2006, 17:42
У меня все ваши функции нормально отработали на том же самом FB 2.0 RC1. Попробуйте в тестовой программе выполнитьВладимир Кузнецов писал(а):Уважаемые Разработчики!
Добавьте, пожалуйста, диагностику хотябы в firebird.log!
У меня UDF слинкованна только с libc.so.6. (см. ссылку)
И всё равно не грузится.
При отсутствии каких-либо вразумительных сообщений,
непонятно что ещё можно сделать.
Код: Выделить всё
if (!(dlhandle=dlopen("vv_udf.so",RTLD_LAZY))) printf("Error: %s\n",dlerror());
else printf("Success\n");
RC1 скомпилён в средеv6y писал(а): У меня все ваши функции нормально отработали на том же самом FB 2.0 RC1.
1. RedHat8 (kernel 2.4.18-14 + gcc 3.2 + libc 2.2.93) - SS non-NPTL
2. RedHat9 (kernel 2.4.20-8 + gcc 3.2.2 + libc 2.3.2) - SS NPTL & CS
у тебя видимо что-то совместимое. А на пятом федорином горе gcc уже 4.1. Такшта...
Если говорить о несовместимости, то тут скорее от версии GLIBC больше зависит. У меня GLIBC 2.3.2 ( а на ФедОре какая?), gcc 3.3.5 и UDF откомпиленная автором топика (GCC: (GNU) 4.1.0 20060304 (Red Hat 4.1.0-2)) у меня отработала без проблем.Merlin писал(а):RC1 скомпилён в средеv6y писал(а): У меня все ваши функции нормально отработали на том же самом FB 2.0 RC1.
1. RedHat8 (kernel 2.4.18-14 + gcc 3.2 + libc 2.2.93) - SS non-NPTL
2. RedHat9 (kernel 2.4.20-8 + gcc 3.2.2 + libc 2.3.2) - SS NPTL & CS
у тебя видимо что-то совместимое. А на пятом федорином горе gcc уже 4.1. Такшта...
-
- Сообщения: 9
- Зарегистрирован: 16 апр 2006, 17:42
Та же проблема с
FirebirdSS-2.0.0.12724-ReleaseCandidate4.nptl.i686.rpm
и
Fedore Core 5
Решил путём:
1. установки пакаджей (yum)
compat-gcc-32
compat-libstdc++-33
2. перекомпиляции моей udf.so используя gcc32
Самое забавное, что udf.so компилированная
из под gcc 3.2 на другом компьютере с Slackware 10.1
не работатет на Fedore Core 5!
Ещё мне кто будет рассказывать про низкую TCO для Linux - поубиваю.
Вот Вы можете представить С dll скомпилированную на win98, которая не работает на 2003?
Я не могу.
FirebirdSS-2.0.0.12724-ReleaseCandidate4.nptl.i686.rpm
и
Fedore Core 5
Решил путём:
1. установки пакаджей (yum)
compat-gcc-32
compat-libstdc++-33
2. перекомпиляции моей udf.so используя gcc32
Самое забавное, что udf.so компилированная
из под gcc 3.2 на другом компьютере с Slackware 10.1
не работатет на Fedore Core 5!
Ещё мне кто будет рассказывать про низкую TCO для Linux - поубиваю.
Вот Вы можете представить С dll скомпилированную на win98, которая не работает на 2003?
Я не могу.