Posix标准要求默认的可执行文件名为
我发现a.out是一个乏味的文件名,当我的构建过程当前与flex tfm.l; gcc lex.tfm.c
一样干净时,我对重命名输出的-o
标志或任何生成文件都不感兴趣。
默认情况下,Microsoft的cl
编译器会生成lex.tfm.exe
。我知道.exe不会在Linux上应用,但有没有任何编译器类似地放弃了这个过时的a.out
?或者是一个将推送输出名称的杂注?
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会话的启动脚本会导出CFLAGS
和make
使用的一些环境变量的适当定义。