Задать вопрос

Undefined symbol когда загружаю библиотеку через dlopen?

Пытаюсь написать плагин для одной программы, который бы добавил поддержку Redis. В нём нужно написать несколько функций, которые будут вызываться. Использую github.com/redis/hiredis для этого.


Если просто собрать hiredis, то всё работает нормально. Если же собираю so, то при попытке загрузить через dlopen выдаёт ошибку undefined symbol: redisConnectWithTimeout.


Проблема, скорее всего, в том, как я компилирую это дело: gcc -I./ -fPIC -shared example.c -o plugin.so
nm plugin.so показывает следующее:
U redisConnectWithTimeout
U redisFree


Пробовал также установить hiredis и компилировать с -lhiredis, результат тот же.
  • Вопрос задан
  • 3449 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    AL-1802 Администрирование Astra Linux Special Edition 1.8
    2 недели
    Далее
  • Skillbox
    Linux для робототехников
    3 месяца
    Далее
  • Skillfactory
    Профессия C++ разработчик
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@theaspin
Попробуйте добавить флаг -rdynamic при компиляции плагина. С какими флагами вызывается dlopen?
Ответ написан
@theaspin
Еще стоит добавить -ldl при компиляции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы