在偷懒使用 gcc * -o main
多个文件进行编译时遇见一个奇怪的错误:clang: error: cannot specify -o when generating multiple output files
,经过其他机器与系统测试后均为出现这种情况,于是开始了探索。
原因:编译命令多个文件
首先按照错误报告:「在输出多个文件时无法使用 -o
指定文件输出名」在不指定输出文件的情况下进行编译,除了得到默认的 a.out
文件之外,还得到若干个与存在头文件相关联的的 *.hpp.gch
文件。
推测该版本编译器默认对头文件进行预编译以加速整个编译过程,导致存在多个输出故无法使用 -o fileName
指定。
解决:只编译 *.c
或 *.cpp
文件
g++ *.cpp -o main.o
当然也可以写makefile
其他
出现问题的 clang
版本信息:
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
参考
Stackoverflow: What is the use of -fsyntax-only option in gcc command?