使用gcc -Q -v的“选项已启用”和“选项已传递”之间有什么区别

thtygnil  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(146)

我在寻找编译过程中使用的默认编译器标志。因此,我使用了命令gcc -Q -v <example.c>,感兴趣的输出如下所示:
GNU C(Ubuntu 4.8.4- 2ubuntu 1 ~14.04.3)版本4.8.4(x86_64-linux-gnu)由GNU C版本4.8.4、GMP版本5.1.3、MPFR版本3.1.2-p3、MPC版本1.0.1编译而成
GGC启发式:--参数ggc最小扩展=100 --参数ggc最小堆大小=131072
传递的选项:-v -多协议x86_64-linux-gnu示例。c-mtune=通用-march=x86-64 -堆栈保护器-W格式-W格式安全性
启用的选项:- 主动循环优化-快速同步展开表-fauto-inc-dec -fbranch-count-reg -fcommon -fdelete-null-pointer-checks-fdwarf 2-cfi-asm -fearly-inlining -feliminate-unused-debug-types -function-cse-fgcse-lm -fgnu-runtime-fgnu-unique-fident -finline-atomics-fira-提升-压力-fira-共享-保存-插槽-fira-共享-溢出-插槽-fivopts -fkeep-static-常量-溢出-下划线-fmath-errno -fmerge-debug-字符串-fmove-loop-不变量-fpeephole -fprefetch-loop-数组-freg-struct-return -fsched-critical-path-启发式-fsched-dep-count-启发式-fsched-group-启发式-fsched-interblock -fsched-last-insn-启发式-fsched-rank-启发式-fsched-spec -fsched-spec-insn-启发式-fsched-stalled-insns-dep -fshow-column-fsigned-zeros -fsplit-ivs-in-unroller -fstack-保护器-fstrict-易失位域-fsync-libcalls -ftrapping-数学-ftree-coalesce-vars -ftree-cselim -ftree-forwprop -ftree-loop-if-转换-ftree-loop-im -ftree-loop-ivcanon -ftree-loop-optimize -ftree-parallelize-loops= -ftree-phiprop -ftree-pta -ftree-reassoc -ftree-scev-cprop -ftree-slp-向量化-ftree-vect-loops-版本-每次函数-函数风表-fvar跟踪-fvar跟踪-赋值-fvar初始化-in-bss -m128位长双精度-m64 -m80387 -maccumulate-传出参数-恶意字符串操作-mfancy-math-387-mfp-ret-in-387-mfxsr -mglibc -mieee-fp-mlong-双精度-80 -mmmx -mno-sse 4-mpush参数-mred区域-msse -msse 2-mtls-直接段引用
我现在很纳闷:选项已启用选项已传递之间有什么区别?

7vux5j2d

7vux5j2d1#

传递的选项是添加到命令行的选项,通过配置添加,如-march=x86-64 -fstack-protector,或通过命令调用添加,如-v。这意味着这些选项在默认情况下不启用,必须通过gcc命令指定。
Options enabled是启用的选项,并且总是用于在特定系统上使用特定gcc进行编译,只要您没有禁用其中的某些选项。

例如,在一个清晰的环境中调用gcc example.c将给予你example.c作为唯一的传递选项,但是所有启用的选项仍然相同。

相关问题