17

摘要-fand -mingccclang编译器选项代表什么?

详情

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

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

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

4

2 回答 2

18

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

“f”代表“标志”。

如果通过 ' ' 指定,则标志打开,通过 ' '-fFLAG关闭-fno-FLAG

前任:

  -fpic         # flag to set position independent code 
  -fno-builtin  # don't recognize build in functions ... 

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

Src: https ://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html(例如-fpci,当这个标志被设置时)


'm'代表模式。一个普遍的特征是它有时具有参数。例如
 -mabi=name   #abi mode = name
 -mcpu=cpu

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

于 2017-08-03T22:36:47.060 回答
0

根据 gcc onlinedocs,形式的选项-ffoo-fno-foo代表机器无关的代码生成约定。

例子:fpic,-fno-pic

-m选项代表机器相关选项。

例如:-mcpu, -march,-matomic

https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options

https://gcc.gnu.org/onlinedocs/gcc/Submodel-Options.html#Submodel-Options

于 2022-02-19T05:26:19.183 回答