#windows #command-line #compilation #linker #cl
#Windows #командная строка #Сборник #компоновщик #cl
Вопрос:
Я пытаюсь использовать компилятор Microsoft ( cl
) из командной строки для создания несвязанных объектных файлов:
cl /c /nologo /OUT:main.obj main.c
main.c
является пустой main
функцией:
int main( void ) { return 0; }
Объектный файл создается, но cl
выводит несколько D9002
предупреждений:
cl : Command line warning D9002 : ignoring unknown option '/OU'
cl : Command line warning D9002 : ignoring unknown option '/OT'
cl : Command line warning D9002 : ignoring unknown option '/O:'
cl : Command line warning D9002 : ignoring unknown option '/Om'
cl : Command line warning D9002 : ignoring unknown option '/Oa'
cl : Command line warning D9002 : ignoring unknown option '/On'
cl : Command line warning D9002 : ignoring unknown option '/O.'
cl : Command line warning D9002 : ignoring unknown option '/Oo'
cl : Command line warning D9002 : ignoring unknown option '/Ob'
cl : Command line warning D9002 : ignoring unknown option '/Oj'
Как я понимаю, это параметры компоновщика, которые передаются автоматически cl
, поскольку они также используются для компоновки.
Однако в моем случае, поскольку я не вызываю компоновщик (путем указания /C
), кажется, что cl
эти неожиданные параметры по умолчанию сбивают с толку.
Есть ли способ переопределить эти параметры по умолчанию или подавить вывод этих предупреждений?
Комментарии:
1.
cl
синтаксический/OUT:main.obj
анализ,/OU /OT /O: /Om ...
который является недопустимым. Обратите внимание, что для /Oi не выдается предупреждение.2. Вау… Как я это пропустил! Спасибо 🙏
Ответ №1:
/OUT
не является опцией компилятора. Если вы хотите скомпилировать без привязки, используйте следующую командную строку:
cl /c /nologo main.c
Имя объектного файла подразумевается именем исходного файла. Предыдущий вызов компилятора выводит main.obj.