Сценарий компоновки содержит подробные инструкции для управления процессом компоновки Чтобы понимать эти возможности и уметь ими пользоваться, необходимо знать этапы компиляции исходного кода на языке С. Процесс компиляции исходного кода на языке С для других компиляторов С состоит из тех же этапов, что и для компилятора GCC видно, что компоновщик играет важную роль в создании исполняемого файла. С его помощью объектный файл и библиотечные файлы из разных источников компонуются, т. е. соединяются, в один исполняемый файл, содержащий чисто машинный код. В данной книге рассматривается только «чистый» машинный код, так как BIOS общается с аппаратными средствами напрямую.
С помощью сценария компоновки можно контролировать каждый аспект процесса компоновки, например, перемещение результатов компиляции, формат исполняемого файла и точку входа в исполняемом файле. В совокупности с различными утилитами обработки двоичных файлов, сценарий компоновки предоставляет программисту мощный инструмент разработки программного обеспечения. Как видно из рис. 3.2, исходный код на языке ассемблера и исходный код на языке С можно Скомпилировать отдельно, а затем с помощью компоновщика LD Скомпоновать Получившиеся объектные файлы в один исполняемый файл.Исходный код на языке С Компиляция исходного кода Объектный файл Компоновщик LD -> Исполняемый двоичный файл Компиляция исходного кода -» Объектный файл Компоновщик LD -> Объектный файл -> Утилита Objcopy -> Исполняемый двоичный файл В данном разделе рассматривается второй способ. Для примера рассмотрим сценарий компоновки, используемый для создания экспериментальной BIOS платы расширения PCI, рассматриваемой в Части III этой книги. Это — довольно простой сценарий компоновки. Именно поэтому он и выбран для начального этапа обучения. Сценарий компоновки представляет собой обычный текстовый файл. Однако его содержимое должно удовлетворять определенным синтаксическим правилам компоновщика LD. В большинстве случаев используется именно формат, показанный на рис. 3.3. Для примера, рассмотрим make-файл и сценарий компоновщика из Главы 7. Make-файл и сценарий компоновки тесно связаны между собой, и поэтому должны рассматриваться совместно. Чтобы разобраться с содержимым листинга 3.5, вернемся к рис. 3.3. Но сначала следует отметить, что, как и в исходном коде языка С, последовательность знаков /* и */ в сценарии компоновки служит для обрамления комментариев. Таким образом, первой значимой строкой кода в листинге 3.5 является следующая:
Рубрика: Женский интерес