clang
Clang
用途
引导开发者掌握 Clang 特有功能:更优质的诊断、sanitizer 集成、优化备注、静态分析和 LLVM 工具链。涵盖与 GCC 的差异及 Apple/FreeBSD 的特殊注意事项。
触发场景
- "我想要更好的编译器诊断/错误信息"
- "如何使用 clang-tidy / clang-format?"
- "如何查看编译器优化了什么或没有优化什么?"
- "我在 macOS / FreeBSD 上使用 clang"
- "用于 MSVC 兼容构建的 clang-cl" — 参见
skills/compilers/msvc-cl - sanitizer 相关查询 — 参见
skills/runtimes/sanitizers
工作流程
1. 构建模式标志(与 GCC 相同)
Clang 接受大多数 GCC 标志。关键差异:
More from killvxk/low-level-dev-skills-zh
binutils
GNU binutils 二进制操作与分析技能。适用场景:使用 ar 管理静态库、使用 strip 或 objcopy 处理二进制文件、使用 addr2line 将地址转换为源码位置、使用 strings 提取文本、或使用 c++filt 对 C++ 名称进行反混淆。触发条件:涉及 ar、strip、objcopy、addr2line、strings、c++filt、ranlib 或二进制后处理任务的查询。
1ebpf
Linux 可观测性和网络的 eBPF 技能。适用场景:使用 libbpf 或 bpftrace 编写 eBPF 程序、挂载 kprobe/tracepoint/XDP 钩子、调试验证器错误、使用 eBPF map,或实现跨内核版本的 CO-RE 可移植性。触发条件:查询 eBPF、bpftool、bpftrace、XDP 程序、libbpf、验证器错误、eBPF map 或使用 BPF 进行内核追踪相关问题。
1gcc
C/C++ 项目的 GCC 编译器技能。适用场景:选择优化级别、警告标志、调试构建、LTO、sanitizer 插桩,或诊断 GCC 编译错误。涵盖调试与发布构建的标志选择、ABI 问题、预处理器宏、配置引导优化(PGO)及与构建系统的集成。触发条件:涉及 gcc 标志、编译错误、性能调优、警告抑制或跨标准编译的查询。
1cmake
C/C++ 项目的 CMake 构建系统技能。适用场景:编写或重构 CMakeLists.txt、配置源外构建、选择生成器(Ninja、Make、VS)、使用 target_link_libraries 管理目标和依赖、通过 find_package 或 FetchContent 集成外部包、启用 Sanitizer、为交叉编译配置工具链文件,或导出 CMake 包。触发条件:涉及 CMakeLists.txt、cmake 配置错误、目标属性、安装规则、CPack 或 CMake Presets 的查询。
1cpp-modules
现代 C++ 项目的 C++20 模块技能。适用场景:使用命名模块、模块分区、头文件单元、CMake MODULE_SOURCES、Clang -fmodules-ts、BMI 缓存问题,或从头文件迁移到模块。触发条件:涉及 C++20 模块、import 语句、模块接口单元、头文件单元或 BMI 文件的查询。
1binary-hardening
二进制加固技能,用于安全加固的 C/C++ 构建。适用场景:启用 RELRO、PIE、栈金丝雀、FORTIFY_SOURCE、CFI sanitizers、影子栈,或 seccomp-bpf 系统调用过滤。涵盖 checksec 分析、用于加固构建的编译器和链接器标志,以及 NSA/CISA 推荐的缓解措施。触发条件:查询涉及二进制加固、checksec、RELRO、PIE、栈金丝雀、FORTIFY_SOURCE、CFI、影子栈,或 seccomp。
1