Ресурс для понимания компиляции, загрузчика, компоновщика и структуры процесса - PullRequest
2 голосов
/ 01 марта 2012

Я хотел бы понять общий процесс, связанный с компиляцией и выполнением программы на Си.В частности, как исходные файлы C и файлы заголовков скомпилированы в объектный код и связаны с библиотеками для создания исполняемого файла ELF и как ELF загружается в память?Также я хотел бы прочитать о структуре процесса в памяти.(Я специально не ищу этапы компиляции, которые я получаю из книг по компиляторам, например, Ахо, Ульман.)

Какой ресурс (онлайн / книга) является лучшим, чтобы понять это в деталях?

Ответы [ 2 ]

2 голосов
/ 01 марта 2012

Я должен был узнать обо всем этом недавно. Книга, которая подробно описывает то, что вы спрашиваете: Компьютерные системы: взгляд программиста . В частности, глава 7, в которой говорится о следующих темах:

  • Драйверы компилятора
  • Статическое связывание
  • Объектные файлы
  • Перемещаемые объектные файлы
  • Символы и таблицы символов
  • Разрешение символа
  • Переселение
  • Исполняемые объектные файлы
  • Динамическое связывание с общими библиотеками
  • Загрузка и связывание общих библиотек из приложений
  • позиционно-независимый код (PIC)
  • Инструменты для манипулирования объектными файлами
0 голосов
/ 01 марта 2012

Википедия - хорошее начало. Он также имеет ряд ссылок на другие сайты.

http://en.wikipedia.org/wiki/Executable_and_Linkable_Format

И спецификации, конечно: http://refspecs.freestandards.org/elf/elf.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...