gcc/clang编译器选项中-f和-m代表什么?

Gab*_*ern 6 gcc

简介:-f-min gccclang编译器选项代表什么?

细节:

使用时clang我注意到许多编译器选项都是以-f其他编译器选项开头的-m.我认为这有一些历史原因,我很好奇所以我看了一下gcc帮助,看到了以下内容:

以-g,-f,-m,-O,-W或--param开头的选项会自动传递给gcc调用的各个子进程.为了将其他选项传递给这些进程,必须使用-W选项.

如果我不得不猜测我认为这-f可能代表前端和-m机器.但我有兴趣听到一个更全面的答案,可能包括gcc调用的其他子流程.

Leo*_*sev 15

我没有具体的来源说明“f”“m”的含义,但我们可以根据文档中的使用模式进行推断。

“f”代表“旗帜”。

标志是,如果通过“指定的-fFLAG”通过和关“ -fno-FLAG

前任:

  -fpic         # flag to set position independent code 
  -fno-builtin  # don't recognize build in functions ... 
Run Code Online (Sandbox Code Playgroud)

技术定义是 'f' 定义了“控制代码生成中使用的接口约定”。

源代码: https ://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html(例如 -fpci,设置此标志时)


“m”代表模式。一个普遍特征是它有时具有参数。例如
 -mabi=name   #abi mode = name
 -mcpu=cpu
Run Code Online (Sandbox Code Playgroud)

源代码:https : //gcc.gnu.org/onlinedocs/gccint/Standard-Names.html (例如......当这种模式......)

  • 致读者:请注意,这个答案是完全错误的。“f”表示与机器无关的设置,“m”表示与机器相关的设置。反例:“-mcrc/-mno-crc”是“类似标志”,“-fc++-abi”是“类似模式”。第一个链接中描述的第一个设置是“-fstack-reuse=reuse-level”,它不是一个标志。原始帖子中提供的第二个来源甚至没有谈论 GCC 前端;它描述了 GCC 内部寄存器传输语言代码生成过程的命名约定。 (2认同)

Mah*_*35h 5

根据 gcc onlinedocs,形式-ffoo和选项-fno-foo代表机器独立代码生成约定。

例子:fpic-fno-pic

-moptions 代表机器相关选项。

例如:-mcpu, -march,-matomic

https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Optionshttps://home.cs.colorado.edu/~main/cs1300/doc/gnu/gcc_2 .html#SEC43

https://gcc.gnu.org/onlinedocs/gcc/Submodel-Options.html#Submodel-Optionshttps://home.cs.colorado.edu/~main/cs1300/doc/gnu/gcc_2.html#SEC16