是否有 Linux C 编译器不将输出命名为 a.out?
Is there a Linux C compiler that doesn't name the output a.out?
我发现 a.out 是一个乏味的文件名,我对重命名输出的 -o
标志或任何 makefile 都不感兴趣,因为我的构建过程目前非常干净flex tfm.l; gcc lex.tfm.c
.
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 会话的启动脚本导出 CFLAGS
的适当定义和 make
.
使用的一些环境变量
我发现 a.out 是一个乏味的文件名,我对重命名输出的 -o
标志或任何 makefile 都不感兴趣,因为我的构建过程目前非常干净flex tfm.l; gcc lex.tfm.c
.
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 会话的启动脚本导出 CFLAGS
的适当定义和 make
.