Toccata in Nowhere.

解决 clang: error: cannot specify -o when generating multiple output files

2020.12.13

偷懒使用 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?