Как добавить пользовательскую функцию в библиотеку QDB?

QDB - это база данных, предоставляемая пакетом QNX Neutrino. Я просмотрел документацию QDB, чтобы добавить пользовательскую функцию SQL: http://www.qnx.com/developers/docs/6.5.0/topic/com.qnx.doc.qdb_en_dev_guide/writing_functions.html?cp=2_0_8

Я создал исходный файл, в котором пользователь определил функцию SQL, написанную на языке C, и определение структуры qdb_function. Я создал его с помощью файла make для создания libudf.so. По предложению QDB я добавил Function = udftag@libudf.so в qdb.cfg. Но при запуске qdb в командной строке выдает ошибку (жирным шрифтом):

qdb -I basic -V -R set -v -c /etc/sql/qdb.cfg -s de_DE @ cldr -o tempstore = / fs / tmpfs

QDB: не зарегистрирован сценарий для обработки поврежденной базы данных.

Функция qdb: processing [TempMainAddressBook] - Невозможно получить доступ к общей библиотеке

и QDB выходит немедленно.

Я пробовал следующие вещи:

  1. убедился, что библиотека sqlite3 добавлена ​​в файл make

  2. исходный код находится строго на C с использованием директивы: extern "C", чтобы избежать искажения имени, так как расширение файла -.cpp. Я тоже пробовал с расширением.c.

  3. учитывая абсолютный путь к libudf.so в qdb.cfg как: Function = udftag@/usr/lib/libudf.so

  4. Структура qdb_funcion правильно определена только в исходном коде библиотеки.

  5. пробовал без использования статического объявления функции (упомянуто в документации по qdb)

После попытки всех попаданий и испытаний, я получаю ту же ошибку каждый раз, которая не может получить доступ к общей библиотеке

Если у кого-то есть идеи, чтобы решить эту ошибку, пожалуйста, поделитесь.

1 ответ

Предложение 1: запустите qdb, установив LD_DEBUG=1, как в:

LD_DEBUG=1 qdb command line options 

Это выведет много отладочной информации из динамического загрузчика, когда он попытается найти и затем загрузить файлы.so. Проверьте, какой путь он выводит перед отображением сообщения "Не удается получить доступ".

Предложение 2: очевидно, но убедитесь, что разрешения для файла.so в порядке. У вас есть разрешение на выполнение?

Предложение 3: проверьте, является ли сообщение об ошибке идентичным, если вы полностью удалите файл.so из системы

Предложение 4: увеличить количество строчных букв 'v'-s. QDB, вероятно, поддерживает больше, с постепенным увеличением количества подробной информации по мере увеличения чисел (6 должно быть достаточно для полной детализации)

Другие вопросы по тегам