Поделиться через


Вызов компоновщика компилятором CL

Компилятор CL автоматически вызывает компоновщик после компиляции, если не используется параметр /c. Он передает компоновщику имена OBJ-файлов, созданных во время компиляции и имена других файлов, указанных в командной строке. Компоновщик использует параметры, перечисленные в переменной среды LINK. Можно использовать параметр /link, чтобы задать параметры в командной строке компилятора CL. Параметры, указанные после /link заменяют параметры, указанные в переменной среды LINK. Параметры, перечисленные в следующей таблице, отключают компоновку.

Параметр

Описание

/c

Компиляция без компоновки

/E, /EP, /P

Предварительная обработка без компиляции или компоновки

/Zg

Создание прототипов функций

/Zs

Проверка синтаксиса

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

Пример

Предположим, что выполняется компиляция трех исходных файлов на языке C: MAIN.c, MOD1.c и MOD2.c. В каждый файл включен вызов функции, определенной в другом файле.

  • В MAIN.c вызывается функция func1 из файла MOD1.c и функция func2 из MOD2.c.

  • В MOD1.c вызываются функции стандартной библиотеки: printf_s и scanf_s.

  • В MOD2.c вызываются графические функции myline и mycircle, определенные в библиотеке MYGRAPH.lib.

Для построения этой программы следует выполнить компиляцию с помощью следующей команды командной строки:

CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib

Сначала CL компилирует исходные файлы C и создает объектные файлы MAIN.obj, MOD1.obj и MOD2.obj. Компилятор размещает имя стандартной библиотеки в каждом OBJ-файле. Дополнительные сведения см. в разделе Использование библиотеки времени выполнения.

Компилятор CL передает имена OBJ-файлов и имя библиотеки MYGRAPH.lib компоновщику. Компоновщик обрабатывает внешние ссылки следующим образом:

  1. В файле MAIN.obj ссылка на функцию func1 разрешается с помощью определения в файле MOD1.obj; ссылка на функцию func2 разрешается с помощью определения в файле MOD2.obj.

  2. В файле MOD1.obj, ссылки на функцию printf_s и scanf_s разрешаются с помощью определений в библиотеке, имя которой компоновщик обнаруживает в файле MOD1.obj.

  3. В файле MOD2.obj, ссылки на функцию myline и mycircle разрешаются с помощью определений в файле MYGRAPH.lib.

См. также

Ссылки

Параметры компилятора

Настройка параметров компилятора