Я знаю, что исходный код можно скомпилировать и связать с общей / статической библиотекой или исполняемыми файлами ELF. И когда программа запускается, она загружается в память и создает образ процесса в соответствии с форматом ELF. Но я не уверен, как программы загружают общие библиотеки. Как компоновщик ищет символы во внешних библиотеках и как работает архив .a. Что еще я должен знать, если программа работает на 64-битной ОС?
Я пытаюсь нарисовать картину целиком. Может ли кто-нибудь дать общий доклад обо всем этом и дать ссылки / документы / ссылки, чтобы я мог изучить их один за другим.
Заранее спасибо.
Я думаю, что мой вопрос можно описать так:
В Linux, Как исходный код C ++ становится исполняемыми файлами или статическими / динамическими библиотеками. И как программа загружается в память при запуске. В БОЛЬШИХ подробностях!
А сколько инструментов я могу использовать для проверки / манипулирования двоичными файлами Linux (исполняемыми файлами и библиотеками)? Я знаю некоторых как «nm» «readelf».