Как найти общие объекты, загруженные во время запуска приложения? - PullRequest
1 голос
/ 02 марта 2010

Я знаю, что используя dlopen с RLTD_NOLOAD, можно узнать, загружен ли уже общий объект или нет. Это, однако, не работает, если так связано с исполняемым файлом и загружается компоновщиком во время запуска приложения.

Я имею в виду, допустим, у меня есть mylib.so и загружаю его с помощью dlopen. Позже, если я сделаю dlopen с RLTD_NOLOAD, я получу дескриптор, как и ожидалось.

Однако, если я свяжу mylib.so с приложением (-lmylib в make-файле), dlopen вернет NULL.

Как мне получить дескриптор общего объекта, если он напрямую связан с exec. и не загружен явно?

Заранее спасибо

1 Ответ

1 голос
/ 14 октября 2010

Это слишком поздно, но -

dlopen(NULL, RTLD_LAZY/*Any load option u want*/) получит дескриптор двоичного файла. Предполагается, что он сможет найти любой символ в загруженных бинарных или общих библиотеках. Я думаю, что это хорошее место для начала.

...