dlopen stll ищет зависимую библиотеку, хотя депденент уже загружен - PullRequest
1 голос
/ 06 августа 2020

Скажем, libfoo.so зависит от libbar.so (libfoo имеет запись DT_NEEDED для libar.so, а для rpath установлено значение $ ORIGIN). Если я использую следующее:

void * handle_bar = dlopen("./dir1/libbar.so", RTLD_GLOBAL|RTLD_NOW);
void * handle_foo = dlopen("./dir2/libfoo.so", RTLD_LAZY);

handle_foo будет NULL (учитывая, что в dir2 нет libbar.so). Но если я построил libfoo.so без -lbar, он будет работать нормально. Так в чем же причина, по которой он не обнаруживает уже загруженную библиотеку в случае наличия DT_NEEDED? Или есть какой-нибудь другой флаг, который мне нужно использовать при загрузке foo?

...