КОГДА ПРОГРАММА НАПИСАНА
Как правило, при компиляции программ в среде ОС UNIX в качестве последних двух фаз выполняются ассемблирование и редактирование внешних связей. При этом ассемблерный текст, то есть результат предыдущих фаз компиляции, транслируется в команды машинного языка компьютера, на котором программа будет выполняться. Редактор внешних связей разрешает все неопределенные ссылки и делает объектный файл выполняемым. Для большинства языков программирования в ОС UNIX ассемблер и редактор связей генерируют Объектные Файлы Обычного Формата. В результате утилиты, обрабатывающие объектные файлы, могут работать на разных компьютерах под управлением различных версий ОС UNIX, поскольку форматы объектных файлов совпадают.
Объектный файл обычного формата содержит:
- Заголовок файла.
- Вспомогательный заголовок системы UNIX.
- Таблицу заголовков секций.
- Содержимое соответствующих секций.
- Информацию о настройке ссылок.
- Информацию о номерах строк.
- Таблицу имен.
- Таблицу цепочек.
Объектный файл состоит из секций. Обычно их по крайней мере две: .text и .data. В некоторых объектных файлах может быть также секция .bss, содержащая неинициализированные данные. Название этой секции происходит от мнемоники ассемблерной псевдокоманды bss (block started by symbol). Используя опции компиляторов, можно добиться включения в объектный файл дополнительной информации. Например, при компиляции с опцией -g добавляются номера строк и другая информация, необходимая для символьной отладки. Даже занимаясь программированием в течение многих лет, можно особенно не задумываться о содержимом и организации объектных файлов обычного формата, поэтому мы не будем сейчас останавливаться на этом вопросе. Обычному формату объектных файлов посвящена отдельная глава.