Объектный линкер предназначен для создания исполнительных файлов из объектных файлов, сформированных MASM или компиляторами C или PASCAL.LINK формирует переместимый исполнительный код, снабженный информацией перемещения, используя которую, MS-DOS сможет загрузить в память и исполнить соответствующую программу. LINK может формировать программы, содержащие свыше 1Мб кода и данных. Воспринимая в качестве входа 2 файла, LINK может формировать 2 выходных файла.
имя.LIB имя.MAP
(библиотека) \ / (план)
LINK
имя.OBJ / \ имя.EXE
(объектный файл) (исполнительный файл)
Расширения имен файлов, показанные на схеме принимаются по умолчанию.
Объектный файл содержит объектные модули программных сегментов, сформированные MASM или компилятором языка высокого уровня.
Библиотеки содержат наборы модулей, на которых могут ссылаться программные сегменты в объектном файле. Библиотечные файлы формируются при помощи утилиты LIB.
Основным результатом работы LINK является исполнительный файл, содержащий программу в виде, пригодном для загрузки в память и исполнения.
Файл плана является необязательным и содержит, если он формируется, некоторую диагностическую и служебную информацию, которая затем при посредстве утилиты MAPSYM может быть использована в процессе отладки программы.
Файл плана содержит имена, загрузочные адреса и длины всех сегментов программы. Кроме того, сюда входят имена и загрузочные адреса групп в программе, адрес точки входа, а также сообщения о возможных ошибках.
Если задана опция /MAP, в файл включаются имена общих символов и их загрузочные адреса.
Если заданы опции /HIGH или /DSALLOCATE и объем программы и данных в совокупности не превышает 64К, план может содержать символы с необычно большими адресами сегментов. Эти адреса отражают переменные, расположенные ниже действительного начала сегмента. Пример:
FFF0:0A20 TEMP
Адрес TEMP - 00:920h.
Необходимо иметь ввиду, что, кроме двух выходных файлов, LINK может формировать временный файл с именем VM.TMP. Это происходит в том случае, когда линкеру не хватает оперативной памяти. Создание файла VM.TMP сопровождается сообщением на консоли и всегда осуществляется в текущем подоглавлении. В этом случае нельзя использовать опцию /PAUSE и снимать дискету, если она находится на активном драйве, до того, как LINK не уничтожит файл VM.TMP. Не рекомендуется создавать в текущем подоглавлении файл с таким именем, который в этом случае может быть испорчен.