Компоновка программы

После устранения ошибок и получения объектного модуля можно приступать к следующему этапу — созданию исполняемого (загрузочного) модуля, или, как еще называют этот процесс, к компоновке программы. Главная цель этого этапа - преобразовать код и данные в объектных файлах в их перемещаемое выполняемое отображение. Чтобы понять, в чем здесь суть, нужно разобраться, зачем вообще разделяют процесс создания исполняемого модуля на два этапа — трансляцию и компоновку. Это сделано намеренно, чтобы можно было объединять вместе модули, написанные на одном и том же или на разных языках. Формат объектного файла позволяет при определенных условиях объединить несколько отдельно отранслированных исходных модулей в один модуль. При этом в функции компоновщика входит разрешение внешних ссылок (ссылок на внешние процедуры и переменные) в этих модулях. Результатом работы компоновщика является создание загрузочного файла с расширением.ехе. После этого операционная система может загрузить такой файл в память и выполнить его.

Полный формат командной строки для запуска компоновщика довольно сложен (в этой и в большинстве следующих глав мы в основном будем использовать упрощенный формат):

TLINK[ключи] список_объектных_файлов [,имя_загрузочного_модуля]

[,имя_файла_карты][,имя_файла_библиотеки] [,имя_файла_определений],имя_ресурного_файла)

Параметры командной строки для запуска компоновщика перечислены далее.

- ключи — необязательные параметры, управляющие работой компоновщика. Список наиболее часто используемых ключей приведен в приложении В (h|Hwww.piter.com/doWnload). Каждому ключу должен предшествовать символ- (дефис) или / (слеш). При задании имен ключей имеет значение регистр символов.

- список_объектных_файлов — обязательный параметр, содержащий список компонуемых файлов с расширением.obj. Файлы должны быть разделены пробелами или знаком + (плюс), например:

tlink /v prog + mdf + fdr

При необходимости имена файлов снабжают указанием пути к ним.

- имя_загрузочного_модуля — необязательный параметр, обозначающий имя формируемого загрузочного модуля. Если оно не указано, то имя загрузочного модуля будет совпадать с первым именем в списке имен объектных файлов.

- имя_файла_карты — необязательный параметр, наличие которого обязывает ком- поновщик создать специальный файл с картой загрузки. В ней перечисляются имена, адреса загрузки и размеры всех сегментов, входящих в программу.

- имя_файла_библиотеки — необязательный параметр, который представляет собой путь к файлу библиотеки (.lib). Этот файл создается и обслуживается специальной утилитой tlib.exe пакета TASM. Утилита позволяет объединить часто используемые подпрограммы в виде объектных модулей в один файл. В даль­нейшем можно просто указывать в командной строке tlink.exe имена нужных для компоновки объектных модулей и файл библиотеки, в котором следует искать эти подпрограммы. Если компонуется Windows-приложение, то на мес­те параметра имя_файла_библиотеки должно указываться имя библиотеки им­порта (глава 16).

- имя_файла_определений - необязательный параметр, который представляет со­бой путь к файлу определений (.def). Этот файл используется при компоновкеWindows-приложений (глава 16).

- имя_ресурсного_файла — необязательный параметр, который представляет со­бой путь к файлу с ресурсами Windows-приложения (.res). Этот файл исполь­зуется при компоновке Windows-приложений (глава 16).

Рассмотренный нами формат командной строки используется и для 32-разряд­ного варианта компоновщика tlink32.exe.

Существует возможность задания параметров командной строки компоновщи­ка в текстовом файле. Для этого нужно создать файл с именем tlink.cfg (tlink32.cfg). При вызове компоновщика tlink.exe с параметром tlihk.cfg (ttink32.exetlirik32.cfg) ему будет передано содержимое файла tlink.cfg (tlink32.cfg). Например, текст кон­фигурационного файла tlink32.cfg для создания исполняемого файла Wmdows-приложения с отладочной информацией должен выглядеть так:

/v '

/Twe

Так же как и в случае команды tasm.exe, совсем не обязательно запоминать по­дробно синтаксис команды tlink.exe. Для того чтобы получить список ключей программы tlink.exe, достаточно просто запустить ее без параметров.

Для выполнения нашего примера запустим программу tlink.exe командной стро­кой вида

tlink.exe /v prg_6_l.obj.

В результате вы получите исполняемый модуль с расширением.ехе — рrg_6_1.ехе.

Получив исполняемый модуль, не спешите радоваться. К сожалению, устране­ние синтаксических ошибок еще не гарантирует, что программа будет хотя бы за­пускаться, не говоря уже о ее правильной pa6oтe. Поэтому обязательным этапом процесса разработки является отладка?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: