是否有不命名输出 a.out 的 Linux C 编译器?



我发现a.out是一个乏味的文件名,当我的构建过程当前与flex tfm.l; gcc lex.tfm.c一样干净时,我对重命名输出的-o标志或任何生成文件都不感兴趣。

默认情况下,Microsoft的cl编译器会生成lex.tfm.exe。我知道.exe不会在Linux上应用,但有没有任何编译器类似地放弃了这个过时的a.out?或者是一个将推送输出名称的杂注?

Posix标准要求默认的可执行文件名为a.out。我认为任何设计在Unix(类(操作系统上运行的信誉良好的C编译器都会尊重这个标准,即使它冒犯了一些用户的审美感受,所以你不太可能找到你想要的编译器。

然而,如果构建可执行文件如此简单,那么您可以使用make而不创建makefile:

$ # No makefile:
$ ls
tfm.l
$ # Default build recipe:
$ make tfm
lex  -t tfm.l > tfm.c
cc    -c -o tfm.o tfm.c
cc   tfm.o   -o tfm
rm tfm.o tfm.c
$ # Executable created with name 'tfm'
$ ls
tfm  tfm.l

我并不一定建议这样做,但这对于快速编译来说很方便。我更喜欢在编译行中添加警告选项,因此我的真实shell会话的启动脚本会导出CFLAGSmake使用的一些环境变量的适当定义。

最新更新