Это динамический компоновщик; если вы запустите его самостоятельно, он скажет вам, что он делает:
Использование: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
Вы вызвали ld.so, вспомогательную программу для исполняемых файлов совместно используемой библиотеки. Эта программа обычно находится в файле /lib/ld.so
, а специальные директивы в исполняемых файлах, использующие совместно используемые библиотеки ELF, сообщают системному загрузчику, чтобы он загружал вспомогательную программу из этого файла. Эта вспомогательная программа загружает разделяемые библиотеки, необходимые для исполняемого файла программы, подготавливает программу к запуску и запускает ее. Вы можете вызвать эту вспомогательную программу прямо из командной строки, чтобы загрузить и запустить исполняемый файл ELF; это похоже на выполнение самого файла, но всегда использует эту вспомогательную программу из указанного вами файла, а не вспомогательный файл программы, указанный в исполняемом файле, который вы запускаете. Это в основном используется сопровождающими для тестирования новых версий этой вспомогательной программы; скорее всего, вы не собирались запускать эту программу.
Компоновщик используется для запуска динамически связанных программ. Когда вы запускаете chmod
, ядро эффективно работает /lib64/ld-linux-x86-64.so.2 chmod
, как вы делали вручную; последний работает, даже если chmod
двоичный файл не является исполняемым.
Вы найдете гораздо больше подробностей об этом в отличной статье Как запускаются программы: статья ELF binaries .