最新kali之clang++

选项:

-###
	打印(但不要运行)要为此编译运行的命令

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

kali站点笔路
同时也可以直接访问https://mobile.yangkeduo.com/goods.html?goods_id=209567782598 ,提前一步获取kali相关资讯。

在这里插入图片描述

接下来每天会发布一篇kali相关文档,敬请关注留意。

猜你喜欢

转载自blog.csdn.net/qq_40399982/article/details/112379293