Либо я неправильно понимаю, что это говорит (вероятно)
Что, по-видимому, пытается сказать абзац: существует два контекста, в которых может использоваться общая библиотека:
- С помощью компоновщика stati c (он же редактор ссылок), чтобы создать новую общую библиотеку или исполняемый файл из перемещаемых объектов (т. Е. Создать новый
ET_DYN
или ET_EXEC
из ET_REL
s) и - с помощью динамического компоновщика c для создания образа процесса.
Обратите внимание, что новая общая библиотека, созданная в случае 1, выполняет не включать в него существующую общую библиотеку. Существующая библиотека нужна только для того, чтобы компоновщик stati c знал, как новая разделяемая библиотека (или исполняемый файл) должна ссылаться на символы из существующей библиотеки.
Большинство вопросов, которые я видел (и, вероятно, те, которые я видел) Вы имеете в виду) «Как я могу поместить существующий libfoo.so
в новый libbar.so
?», и это на самом деле невозможно.
Обновление:
Я все еще не уверен, что понимаю. Является ли # 1 первоначальным созданием общей библиотеки?
Да: создание новой общей библиотеки или исполняемого файла.
Поскольку исполняемый файл также имеет два контекста: 1) Статический компоновщик c, создающий исполняемый файл из перемещаемых объектов и 2) Использование загрузчика для создания образа процесса.
Это верно, но только для динамически связанных исполняемых файлов. Полностью исполняемые c исполняемые файлы вообще не включают загрузчик.
Я мог бы сказать то же самое и для перемещаемых объектов
Не совсем: перемещаемые объекты делают обычно не участвуют в построении образа процесса (есть исключения, но они действительно особенные и странные), и они, безусловно, не обрабатываются динамическим c компоновщиком (загрузчиком).
Для всех практических целей перемещаемые объекты полезны только как строительные блоки для общей библиотеки или исполняемого файла.