LINUX.ORG.RU

Определение названия и расположения слинкованной статически shared library в процесе исполнения.

 , ,


0

1

Как можно узнать в процессе исполнения бинарного файла из какой статически линкованной shared library вызывается функция.Бинарный файл, скомпилированная программа на С .

статически линкованной shared library

Статически линкуются не shared-библиотеки (.so), а статические (.a), которые фактически являются архивами с объектным кодом. Подозреваю, что никак не узнать.

Поправьте, если ошибаюсь.

apt_install_lrzsz ★★★
()
Ответ на: комментарий от dataman

DLL hell мать его … Один умный человек ошибся и форкнув библиотеку не озаботился изменением ее имени. И так получилось что есть 2 библиотеки оригинальная и измененная, с пересекающимися версиями и полностью совместимые по API , но при этом работающие не много по разному.Самое простое добавить добавить в форкнутую библиотеку экспортируемую функцию для проверки версии.Но проблема в том что для загрузки библиотеки через dlopen нужно знать название и путь к библиотеке . dlopen нам нужен для dlsym чтоб получить адрес функции проверки версии.На оригинальной библиотеке адрес функции будет NULL.

BlackJack
() автор топика
Последнее исправление: BlackJack (всего исправлений: 1)
Ответ на: комментарий от apt_install_lrzsz

Полагаю, речь о тех .so, которые прописаны как NEEDED в ELF, в отличие от динамически загружаемых через dlopen().

Может поможет: https://superuser.com/questions/310199/how-to-see-the-currently-loaded-shared-objects-in-linux

cat /proc/{your PID}/maps
dimgel ★★★★★
()