Как компоновщик находит общую библиотеку без SONAME - PullRequest
4 голосов
/ 01 ноября 2010

если я создаю общую библиотеку без SONAME, как это

gcc -shared libfoo.o -o libfoo.so

и ссылка на него, как компоновщик находит мою общую библиотеку?

Является ли компоновщик именем файла libfoo.so по умолчанию SONAME?

1 Ответ

9 голосов
/ 01 ноября 2010

Я думаю, ты прав.Вот что говорят справочные страницы ld:

-soname = name

При создании общего объекта ELF установите для внутреннего поля DT_SONAME указанное имя.Если исполняемый файл связан с общим объектом, имеющим поле DT_SONAME, то при запуске исполняемого файла динамический компоновщик будет пытаться загрузить общий объект, указанный в поле DT_SONAME, а не с использованием имени файла, данного компоновщику.

...