选项:
-###
打印(但不要运行)要为此编译运行的命令
--analyzer-output <value>
静态分析器报告输出格式(html|plist|plist-multi-file|plist-html|text)
--analyze
运行静态分析器
-arcmt-migrate-report-output <value>
文件报告的输出路径
-B <dir>
将<dir>添加到隐式使用的二进制文件和对象文件的搜索路径中
-CC
在预处理的输出中包含来自宏的注释
-cfguard
发出Windows控制流保护所需的表。
-cl-denorms-are-zero
仅OpenCL。 允许将异常值刷新为零。
-cl-fast-relaxed-math
仅OpenCL。设置-cl-finite-math-only和-cl-unsafe-math优化,并定义__FAST_RELAXED_MATH__。
-cl-finite-math-only
仅OpenCL。 允许假定参数和结果不是NaN或+ -Inf的浮点优化。
-cl-fp32-correctly-rounded-divide-sqrt
仅OpenCL。指定程序源中使用的单精度浮点除法和开方正确的四舍五入。
-cl-kernel-arg-info
仅OpenCL。生成内核参数元数据。
-cl-mad-enable
仅OpenCL。允许在生成的二进制文件中使用不太精确的MAD计算。
-cl-no-signed-zeros
仅OpenCL。允许在生成的二进制文件中使用不太精确的无符号零计算。
-cl-opt-disable
仅OpenCL。此选项禁用所有优化。默认情况下,优化是启用的。
-cl-single-precision-constant
仅OpenCL。将双精度浮点常数视为单精度常数。
-cl-std=<value>
编译的OpenCL语言标准。
-cl-strict-aliasing
仅OpenCL。添加这个选项是为了与OpenCL 1.0兼容。
-cl-uniform-work-group-size
仅OpenCL。 定义全局工作大小是为clEnqueueNDRangeKernel指定的工作组大小的倍数
-cl-unsafe-math-optimizations
允许仅OpenCL。 允许进行不安全的浮点优化。 还暗含-cl-no-signed-zeros和-cl-mad-enable。
--config <value>
指定配置文件
--cuda-compile-host-device
编译主机和设备的CUDA代码(默认)。对非cuda编译没有影响。
--cuda-device-only
仅为设备编译CUDA代码
--cuda-gpu-arch=<value>
CUDA GPU架构(例如sm_35)。 可以多次指定。
--cuda-host-only
仅为主机编译CUDA代码。对非cuda编译没有影响。
--cuda-include-ptx=<value>
包括用于以下GPU架构(例如sm_35)或“全部”的PTX。 可以多次指定。
--cuda-noopt-device-debug
启用设备端调试信息生成。 禁用ptxas优化
--cuda-path-ignore-env
忽略环境变量来检测CUDA安装
--cuda-path=<value>
CUDA安装路径
-cxx-isystem <directory>
添加目录到c++系统,包括搜索路径
-C
在预处理的输出中包含注释
-c
只运行预处理、编译和组装步骤
-dD
除正常输出外,还以-E模式打印宏定义
-dependency-dot <value>
要写入点格式的头依赖项的文件名
-dependency-file <value>
要写入依赖项输出的文件名(或-)
-dI
除正常输出外,还包括-E模式的指令
-dM
以-E模式打印宏定义,而不是正常输出
-D <macro>=<value>
将<宏>定义为<值>(如果省略<值>,则定义1)
-emit-ast
发出Clang AST文件作为源输入
-emit-interface-stubs
生成接口存根文件。
-emit-llvm
对汇编程序和对象文件使用LLVM表示
-enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang<value>
简单的自动变量初始化到0只在基准测试中使用,它最终会被删除,我对此没有问题,因为我只在基准测试中使用它
-E
只运行预处理器
-faddrsig
发出一个地址重要性表
-faligned-allocation
启用C ++ 17对齐的分配功能
-fallow-editor-placeholders
将编辑器占位符视为有效的源代码
-fansi-escape-codes
使用ANSI转义码进行诊断
-fapple-kext
使用苹果的内核扩展ABI
-fapple-link-rtlib
强制链接clang内置运行时库
-fapple-pragma-pack
启用与Apple GCC兼容的#pragma包处理
-fapplication-extension
将代码限制为可用于应用程序扩展的代码
-fblocks
启用“blocks”语言功能
-fborland-extensions
接受Borland编译器支持的非标准构造
-fbuild-session-file=<file>
使用<file>的最后修改时间作为构建会话时间戳
-fbuiltin-module-map
加载clang内置模块映射文件。
-fc++-static-destructors
启用c++静态析构函数注册(默认)
-fcall-saved-x10
使x10寄存器被保存(仅适用于AArch64)
-fcall-saved-x11
使x11寄存器被保存(仅适用于AArch64)
-fcall-saved-x12
使x12寄存器被保存(仅适用于AArch64)
-fcall-saved-x13
使x13寄存器被保存(仅适用于AArch64)
-fcall-saved-x14
使x14寄存器被保存(仅适用于AArch64)
-fcall-saved-x15
使x15寄存器被保存(仅适用于AArch64)
-fcall-saved-x18
使x18寄存器被保存(仅适用于AArch64)
-fcall-saved-x8
使x8寄存器被保存(仅适用于AArch64)
-fcall-saved-x9
使x9寄存器被保存(仅适用于AArch64)
-fcf-protection=<value>
仪器控制流架构保护。 选项:return, branch, full, none.
-fcf-protection
在“full”模式启用cf保护
-fchar8_t
启用c++内置类型char8_t
-fclang-abi-compat=<version>
尝试匹配Clang <版本>的ABI
-fcolor-diagnostics
在诊断中使用颜色
-fcomment-block-commands=<args>
把<arg>中的每个逗号分隔的参数当作一个文档注释块命令
-fcomplete-member-pointers
如果成员指针基类型在microsoftabi下很重要,则要求成员指针基类型是完整的
-fcoroutines-ts
启用对c++协同程序的支持
-fcoverage-mapping
生成覆盖率映射以启用代码覆盖率分析
-fcs-profile-generate=<directory>
生成检测代码以将上下文相关的执行计数收集到<directory> /default.profraw中(被LLVM_PROFILE_FILE 环境变量覆盖)
-fcs-profile-generate
生成检测代码以将上下文相关的执行计数收集到default.profraw(被LLVM_PROFILE_FILE环境变量覆盖)
-fcuda-approx-transcendentals
使用近似的超越函数
-fcuda-flush-denormals-to-zero
在CUDA设备模式下将非正常浮点值刷新为零。
-fcuda-short-ptr
使用32位指针访问const/local/shared地址空间。
-fcxx-exceptions
使c++例外
-fdata-sections
将每个数据放在自己的部分中(仅限ELF)
-fdebug-compilation-dir <value>
要嵌入调试信息的编译目录。
-fdebug-info-for-profiling
发出额外的调试信息,使样本配置文件更准确。
-fdebug-macro
发出宏调试信息
-fdebug-prefix-map=<value>
在调试信息中重新映射文件源路径
-fdebug-ranges-base-address
在debug_ranges中使用DWARF基地址选择项
-fdebug-types-section
将调试类型放在它们自己的部分中(仅限ELF)
-fdeclspec
允许__declspec作为关键字
-fdelayed-template-parsing
在转换单元的末尾解析模板化的函数定义
-fdelete-null-pointer-checks
将空指针的使用视为未定义的行为。
-fdiagnostics-absolute-paths
在诊断中打印绝对路径
-fdiagnostics-hotness-threshold=<number>
如果优化备注至少不包含此概要文件数,则禁止输出它们
-fdiagnostics-parseable-fixits
以机器可解析的形式打印修复程序
-fdiagnostics-print-source-range-info
打印源范围以数字形式显示
-fdiagnostics-show-hotness
在诊断行中启用配置文件热度信息
-fdiagnostics-show-note-include-stack
显示包含诊断注释的堆栈
-fdiagnostics-show-option
打印带有可映射诊断的选项名称
-fdiagnostics-show-template-tree
打印不同模板的模板比较树
-fdigraphs
启用替代令牌表示'<:', ':>', '<%', '%>', '%:', '%:%:' (默认)
-fdiscard-value-names
丢弃LLVM IR中的值名称
-fdollars-in-identifiers
允许在标识符中使用'$'
-fdouble-square-bracket-attributes
在所有C和c++语言模式中启用'[[]]'属性
-fdwarf-exceptions
使用DWARF样式异常
-fembed-bitcode-marker
嵌入占位符LLVM IR数据作为标记
-fembed-bitcode=<option>
嵌入LLVM位码(选项:关闭,全部,位码,标记)
-fembed-bitcode
嵌入LLVM IR位码作为数据
-femit-all-decls
发出所有声明,即使是未使用的
-femulated-tls
使用emutls函数访问thread_local变量
-fexceptions
启用对异常处理的支持
-fexperimental-isel
启用实验性全局指令选择器
-fexperimental-new-pass-manager
在LLVM中启用一个实验性的新通道管理器。
-ffast-math
允许进行有损的浮点优化
-ffine-grained-bitfield-accesses
对具有合法宽度和对齐方式的连续位域运行使用单独的访问权限。
-ffixed-point
启用定点类型
-ffixed-r19
储备寄存器r19(仅Hexagon)
-ffixed-r9
储备寄存器r9(仅ARM)
-ffixed-x10
储备寄存器10(仅AArch64)
-ffixed-x11
储备寄存器11(仅AArch64)
-ffixed-x12
储备寄存器12(仅AArch64)
-ffixed-x13
储备寄存器13(仅AArch64)
-ffixed-x14
储备寄存器14(仅AArch64)
-ffixed-x15
储备寄存器15(仅AArch64)
-ffixed-x18
储备寄存器18(仅AArch64)
-ffixed-x1
储备寄存器1(仅AArch64)
-ffixed-x20
储备寄存器20(仅AArch64)
-ffixed-x21
储备寄存器21(仅AArch64)
-ffixed-x22
储备寄存器22(仅AArch64)
-ffixed-x23
储备寄存器23(仅AArch64)
-ffixed-x24
储备寄存器24(仅AArch64)
-ffixed-x25
储备寄存器25(仅AArch64)
-ffixed-x26
储备寄存器26(仅AArch64)
-ffixed-x27
储备寄存器27(仅AArch64)
-ffixed-x28
储备寄存器28(仅AArch64)
-ffixed-x2
储备寄存器2(仅AArch64)
-ffixed-x3
储备寄存器3(仅AArch64)
-ffixed-x4
储备寄存器4(仅AArch64)
-ffixed-x5
储备寄存器5(仅AArch64)
-ffixed-x6
储备寄存器6(仅AArch64)
-ffixed-x7
储备寄存器7(仅AArch64)
-ffixed-x9
储备寄存器9(仅AArch64)
-fforce-emit-vtables
发出更多虚拟表以改善虚拟化
-fforce-enable-int128
启用支持int128_t类型
-ffp-contract=<value>
融合表单的FP操作(例如FMA):快速| 启用(根据FP_CONTRACT编译指示,默认设置)| 关闭
-ffreestanding
断言编译是在独立的环境中进行的
-ffunciton-sections
将每个函数放在各自的部分中(仅限ELF)
-fgnu-keywords
无论语言标准如何,都允许使用GNU扩展关键字
-fgnu-runtime
生成与标准GNU Objective-C运行时兼容的输出
-fgnu89-inline
使用gnu89内联语义
-fgnu-rdc
生成可重定位设备代码,也称为单独编译模式。
-fimplicit-module-maps
隐式在文件系统中搜索模块映射文件。
-finline-functions
内联合适的函数
-finline-hint-funcitons
(显式或隐式)标记为内联的内联函数
-finstrument-funciton-entry-bare
内联后,仅仪器功能条目,不包含仪器调用的参数
-finstrument-funcitons-after-inlining
像-finstrum -functions一样,但是在内联之后插入调用
-finstrument-functions
生成对仪器功能进入和退出的调用
-fintegrated-as
启用集成的汇编程序
-fkeep-static-consts
保留静态const变量(即使未使用)
-flto-jobs=<value>
控制后端并行性-flto=thin(默认值为0表示线程数将来自检测到的cpu数)
-flto=<value>
将LTO模式设置为“full”或“thin”
-flto
启用LTO在'full'模式
-fmath-errno
要求数学函数通过设置errno来指示错误
-fmax-type-align=<value>
指定对缺乏显式对齐的指针强制执行的最大对齐
-fmerge-all-constants
允许合并常量
-fmodule-file=[<name>=]<file>
指定模块名称到预编译模块文件的映射,或者如果遗漏了模块名称,则加载模块文件。
-fmodule-map-file=<file>
加载此模块映射文件
-fmodule-name=<name>
指定要生成的模块的名称
-fmodules-cache-path=<directory>
指定模块缓存路径
-fmodules-decluse
要求声明模块内使用的模块
-fmodules-disable-diagnostic-validation
加载模块时禁用诊断选项的验证
-fmodules-ignoe-macro=<value>
在构建和加载模块时忽略给定宏的定义
-fmodule-prune-after=<seconds>
指定模块文件将被视为无用的时间间隔(以秒为单位)
-fmodules-prune-interval=<seconds>
指定尝试删除模块缓存之间的间隔(以秒为单位)
-fmodule-search-all
搜索甚至未导入的模块来解析引用
-fmodules-strict-decluse
像-fmodules-decluse一样,但是要求所有的头文件都在模块中
-fmodules-ts
启用对C ++模块TS的支持
-fmodules-user-build-path <directory>
指定模块用户生成路径
-fmodules-validate-once-per-build-session
如果模块已在此构建会话中成功验证或加载,则不要验证模块的输入文件
-fmodules-validate-system-headers
加载模块时,验证模块所依赖的系统头文件
-fmodules
启用'模块'语言功能
-fms-compatibility-version=<value>
用点分隔的值表示要在_MSC_VER中报告的Microsoft编译器版本号(0 =不定义(默认值))
-fms-compatibility
启用完整的Microsoft Visual c++兼容性
-fms-extensions
接受微软编译器支持的一些非标准构造
-fmsc-version=<value>
要在_MSC_VER中报告的Microsoft编译器版本号(0 =不定义(默认))
-fnew-alignment=<align>
指定'::operator new(size_t)'保证的最大对齐方式
-fno-access-control
禁用c++访问控制
-fno-addrsig
不要发出地址重要性表
-fno-assume-sane-operator-new
不要以为C ++的全局运算符new不能为任何指针加上别名
-fno-autolink
禁用生成自动库链接的链接器指令
-fno-builtin-<value>
禁用特定函数的隐式内建知识
-fno-builtin
禁用隐式内置函数知识
-fno-c++-static-destructors
禁用c++静态析构函数注册
-fno-char8_t
禁用c++内置类型char8_t
-fno-common
像普通定义一样编译通用全局变量
-fno-complete-member-pointers
如果成员指针基类型在microsoftabi下很重要,则不要求成员指针基类型是完整的
-fno-constant-cfstrings
禁用codefoundtype常量字符串的创建
-fno-coverage-mapping
禁用代码覆盖分析
-fno-crash-diagnostics
禁用在clang崩溃期间自动生成预处理源文件和复制脚本的功能
-fno-debug-info-for-profiling
不要为样例分析器提供额外的调试信息。
-fno-debug-macro
不发出宏调试信息
-fno-declspec
禁止__declspec作为关键字
-fno-delayed-template-parsing
禁用延迟模板解析
-fno-delete-null-pointer-checks
不要把空指针的使用当作未定义的行为。
-fno-diagnostics-fixit-info
不要在诊断中包含Fixit信息
-fno-digraphs
不允许替代令牌表示'<:', ':>', '<%', '%>', '%:', '%:%:'
-fno-discard-value-names
不要丢弃LLVM IR中的值名称
-fno-dollars-in-identifiers
禁止在标识符中使用'$'
-fno-double-square-bracker-attributes
在所有C和c++语言模式中禁用'[[]]'属性
-fno-elide-constructors
禁用c++复制构造函数省略
-fno-elide-type
打印诊断时不要忽略类型
-fno-experimental-isel
禁用实验全局指令选择器
-fno-experimental-new-pass-manager
在LLVM中禁用实验性的新通道管理器。
-fno-fine-grained-bitfield-accesses
对连续的位域运行使用大整数访问。
-fno-fixed-point
禁用定点类型
-fno-force-enable-int128
禁用对int128_t类型的支持
-fno-gnu-inline-asm
禁用GNU风格内联asm
-fno-integrated-as
禁用集成汇编程序
-fno-jump-tables
不要使用跳转表来降低开关
-fno-lax-vector-conversions
禁止具有不同元素数量或不同元素类型的vector之间的隐式转换
-fno-lto
禁用LTO模式(默认)
-fno-merge-all-constants
禁止合并常量
-fno-objc-infer-related-result-type
不要根据方法族推断与Objective-C相关的结果类型
-fno-operator-names
不要将C ++运算符名称关键字视为运算符的同义词
-fno-plt
不使用PLT进行函数调用
-fno-preserve-as-comments
不要在嵌入式汇编中保留注释
-fno-profile-generate
禁用配置文件检测的生成。
-fno-profile-instr-generate
禁用配置文件检测的生成。
-fno-profile-instr-use
禁止使用仪器数据进行配置文件引导的优化
-fno-register-global-dtors-with-atexit
不要使用atexit或__cxa_atexit来注册全局析构函数
-fno-reroll-loops
关闭循环滚动
-fno-rtlib-add-rpath
不要将具有特定于体系结构的资源目录的-rpath添加到链接器标志
-fno-rtti-data
控制RTTI数据的发射
-fno-rtti
禁用生成rtti信息
-fno-sanitize-address-poison-custom-array-cookie
在AddressSanitizer中使用自定义运算符new []时禁用中毒数组cookie
-fno-sanitize-address-use-after-scope
在AddressSanitizer服务中禁止使用后作用域检测
-fno-sanitize-address-use-odr-indicator
禁用全局ODR指示器
-fno-sanitize-blacklist
不要使用黑名单文件消毒
-fno-sanitize-cfi-cross-dso
对跨dso调用禁用控制流完整性(CFI)检查。
-fno-sanitize-coverage=<value>
禁用消毒程序的覆盖检测的指定功能
-fno-sanitize-memory-track-origins
在MemorySanitizer中禁用起源跟踪
-fno-sanitize-memory-use-after-dtor
在MemorySanitizer中禁用销毁后使用检测
-fno-sanitize-recover=<value>
禁用指定消毒程序的恢复
-fno-sanitize-stats
禁用sanitizer统计信息收集。
-fno-sanitize-thread-atiomics
在ThreadSanitizer中禁用原子操作检测
-fno-sanitize-thread-func-entry-exit
在ThreadSanitizer中禁用功能进入/退出检测
-fno-sanitize-thread-memory-access
在在ThreadSanitizer中禁用内存访问检测
-fno-sanitize-trap=<value>
禁用指定的消毒程序捕获
-fno-short-wchar
强制wchar_t为unsigned int
-fno-show-column
在诊断中不包括列号
-fno-show-source-location
不要在诊断中包含源位置信息
-fno-signed-char
字符是无符号
-fno-signed-zeros
允许忽略浮点零符号的优化
-fno-spell-checking
禁用拼写检查
-fno-stack-protector
禁用堆栈保护
-fno-stack-size-section
不要发出包含有关函数堆栈大小的元数据的部分
-fno-standalone-debug
限制产生的调试信息以减少调试二进制文件的大小
-fno-strict-float-cast-overflow
放宽语言规则,并尝试匹配目标的本机浮点到整数转换指令的行为
-fno-threadsafe-statics
不要发出使局部静态线程安全初始化的代码
-fno-trigraphs
不处理三元图序列
-fno-unroll-loops
关闭循环展开器
-fno-use-cxa-atexit
不要使用__cxa_atexit调用析构函数
-fno-use-init-array
不要用.init_array代替.ctors
-fobjc-arc-exceptions
当合成retain和release in -fobjc-arc时使用EH-safe代码
-fobjc-arc
合成对Objective-C指针的保留和释放调用
-fobjc-exceptions
启用Objective-C例外
-fobjc-runtime=<value>
指定目标Objective-C运行时类型和版本
-fobjc-weak
在Objective-C中启用ARC样式的弱引用
-fopenmp-simd
仅为基于simd的构造发出OpenMP代码。
-fopenmp-targets=<value>
指定要支持的OpenMP卸载目标的逗号分隔列表
-fopenmp
解析OpenMP编译指示并生成并行代码。
-foptimization-record-file=<value>
指定任何生成的YAML优化记录的文件名
-foptimization-record-passes=<value>
仅在生成的优化记录中包括与指定正则表达式匹配的过程(默认情况下,包括所有过程)
-forder-file-instrumentation
生成检测到的代码以将订单文件收集到default.profraw文件中(由“ =”形式的选项或LLVM_PROFILE_FILE env var覆盖)
-fpack-struct=<value>
指定默认的最大结构填充对齐
-fpascal-strings
识别并构造Pascal样式的字符串文字
-fpass-plugin=<dsopath>
从动态共享对象文件中加载通行证插件(仅适用于新通行证管理器)。
-fpcc-struct-return
覆盖默认的ABI以返回堆栈上的所有结构
-fplt
使用PLT进行函数调用
-fplugin=<dsopath>
加载命名插件(动态共享库)
-fprebuilt-module-path=<directory>
指定预构建模块路径
-fprofile-exclude-files=<value>
只对那些名称与所有用分号分隔的正则表达式不匹配的文件中的函数进行测试
-fprofile-filter-files=<value>
工具仅用于名称与任何以分号分隔的正则表达式匹配的文件中的函数
-fprofile-generate=<directory>
生成检测代码以将执行计数收集到<directory> /default.profraw中(被LLVM_PROFILE_FILE环境变量覆盖)
-fprofile-generate
生成检测代码以将执行计数收集到default.profraw中(被LLVM_PROFILE_FILE环境变量覆盖)
-fprofile-instr-generate=<file>
生成检测代码以将执行计数收集到<file>中(被LLVM_PROFILE_FILE环境变量覆盖)
-fprofile-instr-generate
生成检测代码以将执行计数收集到default.profraw文件中(被'='形式的选项或LLVM_PROFILE_FILE环境变量覆盖)
-fprofile-instr-use=<value>
使用仪器数据进行配置文件引导的优化
-fprofile-remapping-file=<file>
使用<file>中描述的重新映射将配置文件数据与程序中的名称进行匹配
-fprofile-sample-accurate
指定样本配置文件是准确的
-fprofile-sample-use=<value>
启用基于样本的配置文件引导的优化
-fprofile-use=<pathname>
使用仪器数据进行配置文件引导的优化。如果pathname是一个目录,它从<pathname>/default.profdata读取。否则,它从文件<pathname>中读取。
-freciprocal-math
允许重新关联分配操作
-freg-struct-return
重写默认ABI以返回寄存器中的小结构体
-fregister-global-dtors-with-atexit
使用atexit或__cxa_atexit注册全局析构函数
-frelaxed-template-template-args
启用c++ 17放宽模板模板参数匹配
-freroll-loops
开启循环重新滚动
-frtlib-add-rpath
将带有特定于体系结构的资源目录的-rpath添加到链接器标志中
-fsanitize-address-field-padding=<value>
AddressSanitizer的字段填充级别
-fsanitize-address-globals—dead-stripping
在AddressSanitizer中启用对全局变量的链接器无效剥离
-fsanitize-address-poison-custom-array-cookie
在AddressSanitizer中使用自定义运算符new []时启用中毒数组cookie
-fsanitize-address-use-after-scope
在AddressSanitizer中启用范围后使用检测
-fsanitize-address-use-odr-indicator
启用ODR指标全局变量可以避免在部分经过消毒的程序中出现虚假的ODR违规报告,但会增加二进制文件的大小
-fsanitize-blacklist=<value>
杀毒软件黑名单文件的路径
-fsanitize-cfi-cross-dso
为跨dso调用启用控制流完整性(CFI)检查。
-fsanitize-cfi-icall-generalize-pointers
在CFI间接调用类型签名检查中通用化指针
-fsanitize-coverage=<value>
指定消毒程序的覆盖工具的类型
-fsanitize-hwaddress-abi=<value>
选择HWAddressSanitizer ABI作为目标(拦截器或平台,默认拦截器)
-fsanitize-memory-track-origins=<value>
在MemorySanitizer中启用起源跟踪
-fsanitize-memory-track-origins
在MemorySanitizer中启用起源跟踪
-fsanitize-memory-use-after-dtor
在MemorySanitizer中启用销毁后使用检测
-fsanitize-recover=<value>
为指定的消毒程序启用恢复功能
-fsanitize-stats
启用sanitizer统计数据收集。
-fsanitize-thread-atomics
在ThreadSanitizer中启用原子操作检测(默认)
-fsanitize-thread-func-entry-exit
在ThreadSanitizer服务中启用函数进入/退出检测(默认)
-fsanitize-thread-memory-access
在ThreadSanitizer服务中启用内存访问检测(默认)
-fsanitize-trap=<value>
启用捕获指定的消毒程序
-fsanitize-undefined-strip-path-components=<number>
在发出检查元数据时去掉(或仅保留,如果是负数)给定数量的路径组件。
-fsanitize=<check>
打开运行时检查各种形式的未定义或可疑的行为。有关可用检查,请参阅用户手册
-fsave-optimization-record=<value>
以特定格式生成一个优化记录文件(默认:YAML)
-fsave-optimization-record
生成YAML优化记录文件
-fseh-exceptions
使用SEH样式例外
-fshort-enums
仅为声明的可能值范围分配给枚举类型所需的字节数
-fshort-wchar
强制wchar_t为一个短的无符号int
-fshow-overloads=<value>
当重载解析失败时,哪些重载候选项显示:best|all;默认为all
-fsized-deallocation
启用c++ 14大小的全局重分配函数
-fsjlj-exceptions
使用SjLj样式异常
-fslp-vectorize
启用超级字级向量化并行传递
-fsplit-dwarf-inlining
在使用Split DWARF时,在对象/可执行文件中提供最少的调试信息,以在没有.dwo / .dwp文件的情况下促进在线符号/堆栈跟踪
-fsplit-lto-unit
允许拆分LTO单元。
-fstack-protector-all
为所有函数启用堆栈保护器
-fstack-protector-strong
为某些容易受到堆栈破坏的功能启用堆栈保护器。 与-fstack-protector相比,它使用了更强大的启发式方法,其中包括包含任意大小(和任何类型)数组的函数,以及对alloca的任何调用或从局部变量获取地址的函数
-fstack-protector
为某些容易受到堆栈破坏的功能启用堆栈保护器。 这使用一种宽松的启发式方法,如果函数包含char(或8位整数)数组或对alloca的常量大小的调用,且这些函数的大小大于ssp-buffer-size(默认值:8个字节),则认为该函数易受攻击。 对alloca的所有大小可变的调用都被视为易受攻击
-fstack-size-section
发出包含有关函数堆栈大小的元数据的部分
-fstandalone-debug
为程序使用的所有类型发出完整的调试信息
-fstrict-float-cast-overflow
假定未定义溢出的float-int强制转换(默认)
-fstrict-return
始终将落在非空函数末尾的控制流路视为不可到达
-fstrict-vtable-pointers
根据用于覆盖多态C ++对象的严格规则启用优化
-fthinlto-index=<value>
使用提供的功能摘要索引执行ThinLTO导入
-ftrap-function=<value>
向指定函数而不是陷阱指令发出调用
-ftrapv-handler=<function name>
指定溢出时要调用的函数
-ftrapv
整数溢出陷阱
-ftrigraphs
处理三字组合
-ftrivial-auto-var-init=<value>
初始化琐碎的自动堆栈变量:未初始化(默认)| 模式
-funique-section-names
对文本和数据部分使用唯一的名称(仅适用于ELF)
-funroll-loops
打开循环展开器
-fuse-init-array
使用.init_array代替.ctors
-fveclib=<value>
使用给定的矢量函数库
-fvectorize
启用循环矢量化传递
-fvisibility-global-new-delete-hidden
为全局C ++运算符提供新的和删除的声明隐藏的可见性
-fvisibility-inlines-hidden
默认情况下,为内联C ++成员函数提供隐藏的可见性
-fvisibility-ms-compat
默认情况下为全局类型提供“默认”可见性,为全局函数和变量提供“隐藏”可见性
-fvisibility=<value>
设置所有全局声明的默认符号可见性
-fwhole-program-vtables
启用整个程序的vtable优化。 需要-flto
-fwrapv
将有符号整数溢出视为二进制补码
-fwritable-strings
将字符串文字存储为可写数据
-fxray-always-emit-customevents
确定是否总是发出__xray_customevent(...)调用,即使并不经常出现该函数。
-fxray-always-instrument=<value>
已弃用:定义用于插入“始终使用” XRay属性的白名单的文件名。
-fxray-attr-list=<value>
定义用于注入XRay属性的功能/类型列表的文件名。
-fxray-instruction-threshold=<value>
设置XRay仪器的最小功能尺寸
-fxray-instrumentation-bundle=<value>
选择要发射的XRay检测点。 选项:全部,无,功能,自定义。 默认为“全部”。
-fxray-instrument
在功能进入和退出时生成XRay仪器底座
-fxray-link-deps
告诉clang添加XRay的链接依赖关系。
-fxray-modes= <value>
默认情况下链接到XRay检测二进制文件的模式列表。
-fxray-never-instrument= <value>
已弃用:定义用于插入“never instrument” XRay属性的白名单的文件名。
-fzvector
启用System z矢量语言扩展
-F <value>
将目录添加到框架包含搜索路径
--gcc-toolchain=<value>
在给定目录下使用gcc工具链
-gcodeview-ghash
在.debug $ H节中发出类型记录哈希
-gcodeview
生成CodeView调试信息
-gdwarf-2
使用dwarf版本2生成源代码级调试信息
-gdwarf-3
使用dwarf版本3生成源代码级调试信息
-gdwarf-4
使用dwarf版本4生成源代码级调试信息
-gdwarf-5
使用dwarf版本5生成源代码级调试信息
-gembed-source
在DWARF调试部分中嵌入源文本
-gline-directives-only
仅发出调试行信息指令
-gline-tables-only
仅发出调试行号表
-gmodules
使用对clang模块或预编译头的外部引用生成调试信息
-gno-embed-source
恢复不将源文本嵌入DWARF调试节中的默认行为
-gsplit-dwarf=<value>
将DWARF裂变模式设置为“拆分”或“单一”
-gz=<value>
DWARF调试节压缩类型
-gz
DWARF调试节压缩类型
-G <size>
将最多<size>个字节的对象放入小数据段(MIPS / Hexagon)
-g
生成源代码级调试信息
--help-hidden
显示隐藏选项的帮助
-help
显示可用选项
--hip-device-lib-path=<value>
HIP设备库路径
--hip-device-lib=<value>
HIP设备库
--hip-link
链接HIP的clang-offload-bundler捆绑包
-H
显示标题包括和嵌套深度
-I-
将所有先前的-I标志限制为双引号包含,并从包含路径中删除当前目录
-idirafter <value>
将目录添加到包含搜索路径之后
-iframeworkwithsysroot <directory>
将目录添加到SYSTEM框架搜索路径,绝对路径相对于-isysroot
-iframework <value>
将目录添加到SYSTEM框架搜索路径
-imacros <file>
解析之前包括文件中的宏
-include-pch <file>
包括预编译的头文件
-include <file>
解析前包含文件
-index-header-map
使下一个包含的目录(-I或-F)成为索引器头映射
-iprefix <dir>
在前缀之前设置-iwithprefix / -iwithprefix
-iquote <directory>
将目录添加到QUOTE包含搜索路径
-isysroot <dir>
设置系统根目录(通常为/)
-isystem-after <directory>
将目录添加到SYSTEM包含搜索路径的末尾
-isystem <directory>
将目录添加到SYSTEM包含搜索路径
-ivfsoverlay <value>
在真实文件系统上覆盖文件描述的虚拟文件系统
-iwithprefixbefore <dir>
设置目录以包括带有前缀的搜索路径
-iwithprefix <dir>
将目录设置为SYSTEM包括带有前缀的搜索路径
-iwithsysroot <directory>
将目录添加到SYSTEM包括搜索路径,绝对路径相对于-isysroot
-I <dir>
添加目录以包含搜索路径
--libomptarget-nvptx-path=<value>
libomptarget-nvptx库的路径
-L <dir>
将目录添加到库搜索路径
-mabicalls
启用SVR4样式的位置无关代码(仅Mips)
-malign-double
将双精度字对齐为两个单词(仅x86)
-mbackchain
通过系统Z上的反向链链接堆栈框架
-mbranch-protection=<value>
强制执行间接分支和函数返回的目标
-mcmse
允许使用CMSE(Armv8-M安全扩展)
-mcode-object-v3
启用代码对象v3(仅限AMDGPU)
-mcrc
允许使用CRC指令(仅适用于ARM / Mips)
-mcumode
使用CU波前执行模式(仅AMDGPU)
-MD
编写一个包含用户和系统头文件的depfile
-meabi <value>
设置EABI类型,例如 4、5或gnu(默认值取决于三倍)
-membedded-data
将常量放在.rodata节中,而不是.sdata节中,即使它们满足-G <size>阈值(MIPS)
-mexecute-only
禁止生成对代码段的数据访问(仅ARM)
-mextern-sdata
假设外部定义的数据满足-G <大小>阈值(MIPS),则在小数据中
-mfentry
在函数入口处插入对fentry的调用(仅x86)
-mfix-cortex-a53-835769
解决方法Cortex-A53勘误表835769(仅适用于AArch64)
-mfp32
使用32位浮点寄存器(仅限MIPS)
-mfp64
使用64位浮点寄存器(仅MIPS)
-MF <file>
将-MMD,-MD,-MM或-M的depfile输出写入<file>
-mgeneral-regs-only
生成仅使用通用寄存器的代码(仅适用于AArch64)
-mglobal-merge
启用全局变量的合并
-mgpopt
对已知位于小数据段(MIPS)中的符号使用GP相对访问
-MG
将缺少的标头添加到depfile
-mhvx-length=<value>
设置六角向量长度
-mhvx=<value>
启用六角向量扩展
-mhvx
启用六角向量扩展
-miamcu
使用Intel MCU ABI
--migrate
运行迁移器
-mincrememtal-linker-compatible
(集成为)发出可与增量链接器一起使用的目标文件
-mindirect-jump=<value>
更改间接跳转指令以禁止猜测
-mios-version-min=<value>
设定iOS部署目标
-MJ <value>
为每个输入编写一个编译数据库条目
-mllvm <value>
转发LLVM的选项处理的其他参数
-mlocal-sdata
将-G行为扩展到对象本地数据(MIPS)
-mlong-calls
通常通过间接跳转生成具有扩展寻址能力的分支。
-mlong-double-128
强制将long double设为128位
-mlong-double-64
强制将long double设为64位
-mmacosx-version-min=<value>
设置Mac OS X部署目标
-mmadd4
启用4操作数madd.s,madd.d和相关指令的生成。
-MMD
编写包含用户标头的depfile
-mmemops
启用备忘录说明的生成
-mms-bitfields
设置默认结构布局以与Microsoft编译器标准兼容
-mmsa
启用MSA ASE(仅MIPS)
-mmt
启用MT ASE(仅MIPS)
-MM
与-MMD类似,但也暗含-E并默认情况下写入stdout
-mno-abicalls
禁用SVR4样式的位置无关代码(仅Mips)
-mno-code-object-v3
禁用代码对象v3(仅限AMDGPU)
-mno-crc
禁止使用CRC指令(仅限Mips)
-mno-cumode
使用WGP波前执行模式(仅AMDGPU)
-mno-embedded-data
如果常量符合-G <size>阈值(MIPS),请不要将常量放在.rodata部分而不是.sdata中
-mno-execute-only
允许生成对代码段的数据访问(仅ARM)
-mno-extern-sdata
如果满足-G <大小>阈值(MIPS),则不要假定外部定义的数据在小数据中
-mno-fix-cortex-a53-835769
不要解决Cortex-A53勘误835769(仅适用于AArch64)
-mno-global-merge
禁用全局变量的合并
-mno-gpopt
不要对已知位于小数据段(MIPS)中的符号使用GP相对访问
-mno-hvx
禁用六角向量扩展名
-mno-implicit-float
不要生成隐式浮点指令
-mno-incremental-linker-compatible
(集成为)发出无法与增量链接器一起使用的目标文件
-mn-local-sdata
不要将-G行为扩展到对象本地数据(MIPS)
-mno-long-calls
恢复不生成长途电话的默认行为
-mno-madd4
禁用4操作数madd.s,madd.d和相关指令的生成。
-mno-memops
禁用备忘录说明的生成
-mno-movt
禁止使用movt / movw对(仅ARM)
-mno-ms-bitfields
不要将默认结构布局设置为与Microsoft编译器标准兼容
-mno-msa
禁用MSA ASE(仅MIPS)
-mno-mt
禁用MT ASE(仅MIPS)
-mno-neg-immediates
禁止将负立即数的指令转换为负数或取反。
-mno-nvj
禁用新值跳跃的生成
-mno-nvs
禁止生成新价值商店
-mno-outline
禁用功能概述(仅适用于AArch64)
-mno-packets
禁用指令包的生成
-mno-relax
禁用链接器松弛
-mno-restrict-it
允许生成ARMv8弃用的IT块。 对于ARMv8 Thumb模式,默认情况下处于关闭状态
-mno-sram-ecc
禁用SRAM ECC(仅限AMDGPU)
-mno-stack-arg-probe
禁用默认启用的堆栈探针
-mno-tls-direct-seg-refs
通过段寄存器禁用直接TLS访问
-mno-unaligned-access
强制所有内存访问对齐(仅适用于AArch32 / AArch64)
-mno-wavefrontsize64
使用波前尺寸32
-mno-xnack
禁用XNACK(仅AMDGPU)
-mnocrc
禁止使用CRC指令(仅限ARM)
-mnvj
启用新值跳跃的生成
-mnvs
启用新价值商店的生成
-module-dependency-dir <value>
将模块依赖项转储到的目录
-module-file-info
提供有关特定模块文件的信息
-momit-leaf-frame-pointer
省略叶功能的帧指针设置
-moutline
启用功能概述(仅限AArch64)
-mpackets
启用指令包的生成
-mpie-copy-relocations
使用副本重定位支持PIE构建
-mprefer-vector-width=<value>
指定用于自动矢量化的首选矢量宽度。 默认为“无”,这允许目标特定的决策。
-MP
为每个依赖项(非主文件)创建虚假目标
-mqdsp6-compat
启用hexagon-qdsp6向后兼容性
-MQ <value>
指定主文件输出的名称以引用depfile
-mrelax-all
(集成为)放松所有机器说明
-mrelax
启用链接器放宽
-mrestrict-it
禁止为ARMv8生成不推荐使用的IT块。 对于ARMv8拇指模式,默认情况下处于启用状态。
-mrtd
将StdCall调用约定设为默认值
-msave-restore
启用使用库调用进行保存和还原
-msign-return-address=<value>
选择寄信人地址签署范围
-msoft-float
使用软件浮点
-msram-ecc
启用SRAM ECC(仅AMDGPU)
-mstack-alignment=<value>
设置堆栈对齐
-mstack-arg-probe
启用堆栈探针
-mstrack-probe-size=<value>
设置堆栈探针大小
-mstackrealign
强制在进入每个功能时重新对齐堆栈
-mthread-model <value>
要使用的线程模型,例如 posix,单个(默认为posix)
-mtls-direct-seg-refs
通过段寄存器启用直接TLS访问(默认)
-mtp=<value>
线程指针访问方法(仅适用于AArch32 / AArch64)
-MT <value>
在depfile中指定主文件输出的名称
-munaligned-access
允许内存访问不对齐(仅适用于AArch32 / AArch64)
-MV
将NMake / Jom格式用于depfile
-mwavefrontsize64
使用波前尺寸64
-mxnack
启用XNACK(仅AMDGPU)
-M
与-MD类似,但也暗含-E并默认写入标准输出
--no-cuda-gpu-arch=<value>
从要编译的GPU列表中删除GPU架构(例如sm_35)。 'all'将列表重置为其默认值。
--no-cuda-include-ptx=<value>
对于以下GPU架构(例如sm_35)或'all',请勿包含PTX。 可以多次指定。
--no-cude-version-check
如果检测到的CUDA安装版本对于所请求的CUDA gpu架构而言过低,请不要出错。
--no-system-header-prefix=<prefix>
将所有以<prefix>开头的#include路径都视为不包含系统头。
-nobuiltininc
禁用内置的#include目录
-nostdinc++
禁用C ++标准库的标准#include目录
-ObjC++
将源输入文件视为Objective-C ++输入
-objcmt-atomic-property
迁移到“atomic”特性
-objcmt-migrate-all
允许迁移到现代ObjC
-objcmt-migrate-annotation
允许迁移到属性和方法注释
-objcmt-migrate-designated-init
启用迁移以针对初始化方法推断NS_DESIGNATED_INITIALIZER
-objcmt-migrate-literals
启用向现代ObjC文字的迁移
-objcmt-migrate-ns-macros
启用迁移到NS_ENUM / NS_OPTIONS宏
-objcmt-migrate-property-dot-syntax
允许将setter / getter消息迁移到property-dot语法
-objcmt-migrate-property
允许迁移到现代ObjC属性
-objcmt-migrate-protocol-conformance
启用迁移以在类上添加协议一致性
-objcmt-migrate-readonly-property
启用向现代ObjC只读属性的迁移
-objcmt-migrate-readwrite-property
启用向现代ObjC读写属性的迁移
-objcmt-nc-nonatomic-iosonly
启用迁移以使用NS_NONATOMIC_IOSONLY宏来设置属性的“ atomic”属性
-objcmt-returns-innerpointer-property
启用迁移以使用NS_RETURNS_INNER_POINTER注释属性
-objcmt-whitelist-dir-path=<value>
仅修改文件名包含在提供的目录路径中的文件
-ObjC
将源输入文件视为Objective-C输入
-o <file>
将输出写入<file>
-pg
启用mcount工具
-pipe
尽可能在命令之间使用管道
--precompile
仅预编译输入
-print-effective-triple
打印有效目标三倍
-print-file-name=<file>
打印<file>的完整库路径
-print-ivar-layout
启用Objective-C Ivar布局位图打印跟踪
-print-libgcc-file-name
打印当前使用的编译器运行时库的库路径(“ libgcc.a”或“ libclang_rt.builtins。*。a”)
-print-prog-name=<name>
打印<name>的完整程序路径
-print-resource-dir
打印资源目录路径名
-print-search-dirs
打印用于查找库和程序的路径
-print-supported-cpus
打印给定目标的支持的CPU模型(如果未指定目标,它将为默认目标打印支持的cpus)
-print-target-triple
打印归一化的目标三元组
-pthread
在生成的代码中支持POSIX线程
--ptxas-path=<value>
ptxas的路径(用于编译CUDA代码)
-P
在-E模式下禁用linemarker输出
-Qn
不发出包含编译器名称和版本的元数据
-Qunused-arguments
不要为未使用的驱动程序参数发出警告
-Qv
发出包含编译器名称和版本的元数据
-relocatable-pch
是否构建可重定位的预编译头
-rewrite-legacy-objc
将旧版Objective-C源代码重写为C ++
-rewrite-objc
将Objective-C源代码重写为C ++
-Rpass-analysis=<value>
来自优化过程的报告转换分析,其名称与给定的POSIX正则表达式匹配
-Rpass-missed=<value>
通过名称与给定POSIX正则表达式匹配的优化过程报告丢失的转换
-Rpass=<value>
由优化过程执行的报告转换,其名称与给定的POSIX正则表达式匹配
-rtlib=<value>
要使用的编译器运行时库
-R<remark>
启用指定的备注
-save-stats=<value>
保存llvm统计信息
-save-stats
保存llvm统计信息
-save-temps=<value>
保存中间编译结果
-save-temps
保存中间编译结果
-serialize-diagnostics <value>
将编译器诊断序列化为文件
-shared-libsan
动态链接杀毒程序运行时
-static-libsan
静态链接杀毒程序运行时
-std=<value>
要编译的语言标准
-stdlib=<value>
要使用的C ++标准库
--system-header-prefix=<prefix>
将所有以<prefix>开头的#include路径都视为包含系统标头。
-S
仅运行预处理和编译步骤
--target=<value>
为给定目标生成代码
-Tbss <addr>
将BSS的起始地址设置为<addr>
-Tdata <addr>
将DATA的起始地址设置为<addr>
-time
时间个别命令
-traditinal-cpp
启用一些传统的CPP模拟
-trigraphs
处理三字组合
-Ttext <addr>
将TEXT的起始地址设置为<addr>
-T <script>
指定<script>作为链接描述文件
-undef
取消所有系统定义
-unwindlib=<value>
解开库以使用
-U <macro>
取消定义宏<宏>
--verify-debug-info
验证调试输出的二进制表示
-verify-pch
加载并验证预编译的头文件是否过时
--version
打印版本信息
-v
显示命令以运行并使用详细输出
-Wa,<arg>
将<arg>中逗号分隔的参数传递给汇编器
-Wdeprecated
对已过时的构造启用警告并定义__DEPRECATED
-Wl,<arg>
将<arg>中逗号分隔的参数传递给链接器
-working-directory <value>
解析相对于指定目录的文件路径
-Wp,<arg>
将<arg>中逗号分隔的参数传递给预处理器
-w<warning>
启用指定的警告
-w
禁止所有警告
-Xanalyzer <arg>
将<arg>传递给静态分析器
-Xassembler <arg>
将<arg>传递给汇编器
-Xclang <arg>
将<arg>传递给clang编译器
-Xcude-fatbinary <arg>
将<arg>传递给fatbinary调用
-Xcude-ptxas <arg>
将<arg>传递给ptxas汇编器
-Xlinker <arg>
将<arg>传递给链接器
-Xopenmp-target=<triple> <arg>
将<arg>传递给由<triple>标识的目标卸载工具链。
-Xopenmp-target <arg>
将<arg>传递到目标卸载工具链。
-Xpreprocessor <arg>
将<arg>传递给预处理器
-x <language>
将后续输入文件视为类型为<language>
-z <arg>
将-z <arg>传递给链接器
注:更多kali相关资讯可关注公众号(bi路),也可以访问个人搭建的kali专属站点笔路(https://www.bilu.asia)
同时也可以直接访问https://mobile.yangkeduo.com/goods.html?goods_id=209567782598 ,提前一步获取kali相关资讯。
接下来每天会发布一篇kali相关文档,敬请关注留意。