Дневники чайника

Краткое описание link.exe

link.exe - это линковщик MS.

Главная функция такой программы - компоновать объектные файлы в исполняемые модули определённого формата.

Так как линковщик обрабатывает только объектные файлы, он независим от языка, на котором был написан исходный код.

Существуют две разные программы от MS, которые сегодня имеют имя link.exe.

Старый, 16-битный "Microsoft (R) Segmented Executable Linker", входящий в состав оригинального пакета MASM до 6.1. Он умеет компоновать модули только полностью. Сегодня этот линковщик может пригодиться для создания DOS-программ в формате com.

Новый "Microsoft (R) Incremental Linker", входящий в состав MS DDK и пакетов разработки на C/С++, начиная с версии "Windows Development System v7.0" и до сегодняшней ".NET 2005". Incremental Linker умеет компоновать с наращением. Если исходник большого приложения был слегка изменён, такой метод значительно ускоряет процесс перекомпоновки.

Изначально этот линкер назывался ilink.exe, но теперь его имя link.exe.

Сейчас речь пойдёт именно о нём.

Incremental Linker до версии 7.10

link.exe - это программа с интерфейсом командной строки.

Новый линковщик бесполезно "открывать" из проводника без указания в командной строке хотя бы файла опций.

Вид строки:

LINK [ключи] [входные_obj-файлы] [@файл_опций]

Где:

файл_опций - имя текстового файла (с любым расширением), в котором лежат указания линковщику. Формат указаний соответствует ключам. Можно использовать несколько таких файлов опций (@имя1 @имя2 @имяX).

входные_obj-файлы - имена объектных файлов через пробел или имя одного файла.

ключи - список возможных опций.

Поскольку link.exe используется в Visual Studio как основной линковщик, в MSDN его описали не так плохо, как ml.exe. И я не вижу смысла подробно разбирать каждый ключ. Рассмотрим лишь несколько основных опций, которые нужны для линковки Win32-программ.

Несколько ключей Incremental Linker
Ключ и форматЧто делает
/SUBSYSTEM:WINDOWS
Выполняет компоновку PE-файла для подсистемы Win32. Необходим для линковки оконных приложений.
/SUBSYSTEM:CONSOLE
Выполняет компоновку PE-файла для 32-битной консольной подсистемы Windows. Необходим для линковки консольных приложений.
/DLL
Выполняет компоновку PE-файлов 32-битных динамических библиотек. Необходим для линковки dll-файлов.
/DEBUG
Формирует отладочную информацию (см. описание ml.exe).




Теперь пару слов о старом линковщике.

Segmented Executable Linker версии 5.31

Это DOS-программа, и она может некорректно работать на системах c WinNT. Однако этот линковщик всё же делает то, что от него требуется сегодня - собирает com-программы для обучения начинающих.

В отличие от нового линкера, Segmented Executable Linker можно использовать без командной строки, таким образом, виды запуска могут быть следующие:

LINK
LINK @<файл_опций>
LINK [ключи] <obj-файл>,<исполняемый_файл>,<map-файл>,<lib-библиотеки>,<def-определения>

Где:

файл_опций - имя текстового файла (с любым расширением), в котором лежат указания линовщику. Формат указаний соответствует ключам Segmented Executable Linker.

def-определения - (путь и) имена входных def-файлов, необходимых для компоновки

lib-библиотеки - (путь и) имена входных lib-файлов, необходимых для компоновки

map-файл - (путь и) имя выходного файла отчёта

исполняемый_файл - (путь и) имя выходного исполняемого файла

obj-файл - (путь и) имя входного объектного файла.

ключи - список возможных опций.

Сам этот линкер давным-давно подробно описан, да и большинство его функций можно воспроизвести с новым Incremental Linker.

Bitfry

<<Вернуться на главную

Hosted by uCoz