Как узнать, что пытается загрузить библиотеку libmysqlclient_r.so - PullRequest
3 голосов
/ 21 апреля 2020

Я использую clang-9 с mysql -connector-c ++ 8.

После обновления mysql -connector-c ++ с 1.1.12 до 8.x и запуска функции в моем приложении : get_driver_instance() выдается исключение:

"Не удалось загрузить библиотеку libmysqlclient_r.so: libmysqlclient_r.so: невозможно открыть общий объектный файл"

Что я пробовал до сих пор:

  • ldd в моем недавно скомпилированном двоичном файле, но мой недавно скомпилированный двоичный файл не связывается с libmysqlclient_r.so.
  • strace -f моего двоичного файла, но нет информации о загрузке этой библиотеки
  • удалил /etc/ld.so.cache и перестроил его с помощью ldconfig, после чего перекомпилировал мое программное обеспечение
  • updatedb && locate \*\.so | xargs ldd и то же самое для \*\.so\.\*, но ни один файл не показывает, что он связан с libmysqlclient_r. так что

Нет ошибок при компиляции. У меня нет идей, что может быть не так. Что я могу сделать, чтобы диагностировать это дальше?

1 Ответ

3 голосов
/ 21 апреля 2020

Runtime dlopen вызовы не приведут к выводу в ldd, но вы можете убедить ld.so печатать, когда кем загружается библиотека, установив переменную окружения LD_DEBUG=files.

...