Добрый день.
При создании разделяемой библиотеки на FreePascal (перенос UDF СУБД Firebird под FreeBSD)
возникли некоторые трудности - СУБД не видит экспортируемых функций.
Для тестирования была написана тестовая программа динамически вызывающая одну из функций
из этой библиотеки.
Так вот при загрузке dlopen ругается:
./libudfbtools.so: Undefined symbol "main"
Он, (main) таки undefined - линкуется из FPC-ного STUB-а, но библиотека грузится с
параметром RTLD_LAZY!
lib := dlopen ('./libudfbtools.so', 1);
FireBird-овская библиотека, в которой присутствуют неопределенные функции, грузится
нормально. Далее выяснилось, что если тестовую программу и библиотеку линковать с
параметром "-E" (ld), то всё OK.
Вопрос к знатокам: какой параметр линковщика, при создании динамической библиотеки,
"убирает ругню" rtld? (ну не пересобирать-же Firebird с "LDFLAGS=-E").
С уважением, Константин.
[freebsd] Динамическая линковка...
Модератор: Модераторы
Константин писал(а): Каким образом?
Добалял что-то вроде:
Код: Выделить всё
procedure mymain; alias : 'main';
begin
end;Точно не помню, но по-моему так. Правда я не уверен, что это корректный способ :rolleyes:
Доброго времени суток.
Времена меняются, а проблемы остаются...
Столкнулся с такой же проблемой. Компилирую библиотеку, кладу в /usr/local/libexec/firebird/udf, но сервер не видит (говорит что "...module name or entrypoint could not be found"). Тестовый пример работает.
OS - FreeBSD 8.2
FPC - 2.7.1
Firebird - 2.5.1
Пните в нужном направлении, пожалуйста.
Времена меняются, а проблемы остаются...
Столкнулся с такой же проблемой. Компилирую библиотеку, кладу в /usr/local/libexec/firebird/udf, но сервер не видит (говорит что "...module name or entrypoint could not be found"). Тестовый пример работает.
OS - FreeBSD 8.2
FPC - 2.7.1
Firebird - 2.5.1
Пните в нужном направлении, пожалуйста.
