ios llvm and clang build tools

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. 延伸阅读

备注:

5.编译过程:

备注:

预处理
• 符号化 (Tokenization)
• 宏定义的展开
• #include 的展开
语法和语义分析
• 将符号化后的内容转化为一棵解析树 (parse tree)
• 解析树做语义分析
• 输出一棵抽象语法树(Abstract Syntax Tree* (AST))
生成代码和优化
• 将 AST 转换为更低级的中间码 (LLVM IR)
• 对生成的中间码做优化
• 生成特定目标代码
• 输出汇编代码
汇编器
• 将汇编代码转换为目标对象文件。
链接器
• 将多个目标对象文件合并为一个可执行文件 (或者一个动态库)

期待下期更新。

 

原文地址:https://www.cnblogs.com/tinkl/p/3749986.html