LINUX.ORG.RU

Нетривиальное использование библиотек...


0

0

Столкнулся с такой проблемой...

Есть программа, которая подгружает библиотеку из .so-шки (/usr/lib/libA.so) с помощью QLibrary (суть dlopen). Эта .so - шка динамически линкуется со своей версий библиотеки libK, которая устанавливается в /usr/lib/libK_my.so. Основная программа также линкуется с libK, но с системной /usr/lib/libK.so. В ходе теста выяснилось, что функции в .so - шке libA используют не libK_my.so, а системную libK.so. Как я понимаю, это связано с тем, что символы из libK ресолвятся раньше, чем библиотека libA подргружается dlopen-ом, и libA в итоге использует системную libK, а не свою.

Можно ли как-то libA заставить использовать свою версию либы libK ? Можно слинковать основную программу не с libK.so а с libK_my.so, но это хак...

anonymous

СИЛЬНО проблемно как на вскидку. Проблему ты понимаеш правильно.

если есть сырцы libA то ко всем вызовам libK_my добавь какойнить префикс типа Kmy_ а в самой libK_my создай альясы на все символы с префиксом libK_my

Возожно какойто инструмент, типа objcopy, сможет просто переименовать вызовы/символы в готовых бинарниках

cvv ★★★★★
()

Использовать переменную LD_LIBRARY_PATH?

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

сырцы есть. А какой программкой можно вытащить имена всех функций из исходников (хотя бы .h файлов) ? Просто их там много (порядка 100).

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.