如何获取rustc使用的所有目标特性(类似gcc -v的输出)
获取rustc使用的目标特定标志
要查看rustc针对target-cpu=native启用的所有目标特性,有几种直接的方法:
1. 直接打印目标特性列表
使用--print target-features参数,rustc会直接列出启用和禁用的CPU特性:
rustc -C target-cpu=native --print target-features
输出格式类似:
+adx,+aes,+avx,+avx2,+bmi,+bmi2,+clflushopt,+clwb,+cx16,+f16c,+fma,+fsgsbase,+fxsave,+fxsavec,+lzcnt,+mmx,+movbe,+pclmulqdq,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+xsave,+xsavec,+xsaveopt,+xsaves,-3dnow,-3dnowa,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,...
其中+开头的是启用的特性,对应gcc的-m<feature>参数;-开头的是禁用的特性,对应gcc的-mno-<feature>参数。
2. 查看rustc调用底层编译器的完整命令
如果想看到rustc传递给clang/gcc的实际命令行参数(和你示例中gcc的cc1参数类似),可以用-v配合--emit=asm(只生成汇编,避免链接阶段的额外输出):
rustc a.rs -C target-cpu=native -v --emit=asm
在输出中找到以Running开头的行,里面包含rustc调用底层编译器的完整命令,其中就能看到所有目标相关的-m标志。
3. 打印目标配置宏
使用--print cfg可以输出rustc用于条件编译的目标配置信息,其中包含启用的特性:
rustc -C target-cpu=native --print cfg
输出里会有类似target_feature="avx2"的条目,每条对应一个启用的CPU特性。
内容的提问来源于stack exchange,提问作者A. K.
相关产品推荐
相关产品推荐

