У меня есть dlopen()
'библиотека, и я хочу инвертировать обратно из дескриптора, который он передает мне, в полный путь к общей библиотеке. В Linux и друзьях я знаю, что я могу использовать dlinfo()
для получения linkmap и итерации по этим структурам, но я не могу найти аналог на OSX. Самое близкое, что я могу сделать, это либо:
-
Используйте
dyld_image_count()
иdyld_get_image_name()
, итерации по всем открытым в настоящее время библиотекам и надеемся, что могу догадаться, какой из них соответствует моему дескриптору -
Как-то найти символ, который живет внутри дескриптора, который у меня есть, и передать это
dladdr()
.
Если у меня есть априорное знание о имени символа внутри библиотеки, которую я только что открыл, я могу dlsym()
, а затем использовать dladdr()
. Это прекрасно работает. Но в общем случае, когда я понятия не имею, что находится внутри этой общей библиотеки, мне нужно было бы перечислять символы, чтобы сделать это, и я не знаю, как это сделать.
Поэтому любые советы о том, как искать путь к библиотеке из своего дескриптора dlopen
, будут очень оценены. Спасибо!