问题描述
我正在尝试从命令行使用Microsoft的编译器(cl
)来生成未链接的目标文件:
cl /c /nologo /OUT:main.obj main.c
int main( void ) { return 0; }
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
被这些意外的默认选项所迷惑。
解决方法
/OUT
不是编译器选项。如果要编译而不链接,请使用以下命令行:
cl /c /nologo main.c
源文件名隐含目标文件的名称。上一个编译器调用输出main.obj。