【问题标题】:What do the -f and -m in gcc/clang compiler options stand forgcc/clang 编译器选项中的 -f 和 -m 代表什么
【发布时间】:2022-02-19 13:26:19
【问题描述】:

总结gccclang 编译器选项中的-f-m 代表什么?

详情

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

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

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

【问题讨论】:

标签: gcc


【解决方案1】:

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

'f' 代表“标志”。

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

例如:

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

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

来源: https://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html (例如 -fpci,当设置了这个 flag 时)


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

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

【讨论】:

  • 听起来很合理。回答一个 4 岁未回答的问题,你会获得徽章吗:)?
  • :-D。我花时间回答这个问题,因为昨天我在阅读关于编译共享库(使用 -fpci)的 GCC 文章时正在寻找同样的东西,并且想知道“f”位是什么。
【解决方案2】:

根据 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

【讨论】:

    猜你喜欢
    • 2020-07-13
    • 1970-01-01
    • 2018-07-12
    • 2019-07-30
    • 1970-01-01
    • 2020-06-03
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    相关资源
    最近更新 更多