Gcc Makefile如何确定编译器将创建的二进制格式?

Gcc Makefile如何确定编译器将创建的二进制格式?,gcc,makefile,executable,gnu-assembler,Gcc,Makefile,Executable,Gnu Assembler,Makefile是否可以确定编译器的目标二进制格式(即PE、ELF、Mach-O等)?也许通过运行带有特定选项的编译器或汇编程序 或者我可以从操作系统(通过运行uname-s或类似的东西)准确地确定这一点吗?这就是配置脚本存在的原因——也就是说,探测构建环境以确定语言中不直接可用的有用信息 如果已经有一个autoconf宏来处理这个问题,我也不会感到惊讶。然而,我没有看 实现您想要的最简单的方法是,首先,使用您想要测试的编译器和编译器选项编译尽可能最简单的程序。然后,使用file命令查看创建的文

Makefile是否可以确定编译器的目标二进制格式(即PE、ELF、Mach-O等)?也许通过运行带有特定选项的编译器或汇编程序


或者我可以从操作系统(通过运行
uname-s
或类似的东西)准确地确定这一点吗?

这就是
配置
脚本存在的原因——也就是说,探测构建环境以确定语言中不直接可用的有用信息

如果已经有一个autoconf宏来处理这个问题,我也不会感到惊讶。然而,我没有看

实现您想要的最简单的方法是,首先,使用您想要测试的编译器和编译器选项编译尽可能最简单的程序。然后,使用
file
命令查看创建的文件类型。您可以在输出上使用
sed
或类似工具,将其转换为您希望传递给实际编译的任何符号或字符串


如果
文件
不合您的口味,您也可以编写一个自定义程序来检查输出文件,看看它是什么。

您的最终目标是什么?@EtanReisner:在编译
.s
汇编文件(大写“s”)时将格式信息传递给C预处理器,指示应预处理程序集文件)。