Я пытался понять, как разрешаются символы в случае динамически загружаемых библиотек. Я заметил, что символы библиотек разрешаются с помощью библиотек, связанных как зависимости Dynami c с библиотекой. То же самое можно перечислить с помощью - ldd <share_file_name.so>
Это правильно?
Ранее я предполагал, что загрузчик будет смотреть на LD_LIBRARY_PATH
и будет искать во всех библиотеках для разрешения символов в библиотеке. Но теперь я думаю об этом, тогда я понимаю, почему этот подход не может быть использован. Причина в том, что это будет очень неоптимизированный способ разрешения символов, если загрузчик должен просмотреть все библиотеки в каталогах, перечисленных в LD_LIBRARY_PATH
. Что если каталог содержит миллион файлов, то он будет очень медленным, поскольку любой файл может иметь символ.