1. 使用 libclan g或 clang 插件 包括( libclang 和 Clangkit)
备注:
Clangkit,它是基于 clang 提供的功能,用
Objective-C 进行封装的一个库。
libclang 提供的 API 非常简单,可以对 C 和 clang
做桥接,并可以用它对所有的源码做分析处理
2. 自定义分析器
备注:
按照 Tutorial
for building tools using LibTooling 中的说明去构造 LLVM ,clang 以及 clan
g的附加工具
3. clang其它特性
备注:
clang还有许多其他的用途。比如,可以写编译器插件(例如,类似上面的检查器例子)并且动态的加载到编译器中。虽然我没有亲自实验过,但是我觉得在
Xcode 中应该是可行的。再比如,也可以通过编写 clang 插件来自定义代码样式(具体可以参见 编译过程)
4. 延伸阅读
备注:
- Clang
Tutorial - X86_64
Assembly Language Tutorial - Custom clang Build
with Xcode (I) 和 (II) - Clang
Tutorial (I), (II) 和 (III) - Clang
Plugin Tutorial - LLVM
blog: What every C programmer should know (I) , (II) 和 (III)
5.编译过程:
备注:
预处理
? 符号化 (Tokenization)
? 宏定义的展开
? #include 的展开
语法和语义分析
?
将符号化后的内容转化为一棵解析树 (parse tree)
? 解析树做语义分析
? 输出一棵抽象语法树(Abstract Syntax Tree*
(AST))
生成代码和优化
? 将 AST 转换为更低级的中间码 (LLVM IR)
? 对生成的中间码做优化
?
生成特定目标代码
? 输出汇编代码
汇编器
? 将汇编代码转换为目标对象文件。
链接器
? 将多个目标对象文件合并为一个可执行文件
(或者一个动态库)
期待下期更新。
ios llvm and clang build tools
时间: 2024-10-29 04:08:46