clang常用命令学习

  • 查看编译源文件需要的几个不同的阶段:
clang -ccc-print-phases main.m
  • 查看oc的c实现:
clang -rewrite-objc main.m
  • 查看操作内部命令:
clang -### main.m -o main
  • 想看清clang的全部过程,可以先通过-E查看clang在预处理处理这步做了什么:(这个过程的处理包括宏的替换,头文件的导入,以及类似#if的处理)
clang -E main.m
  • 预处理完成后就会进行词法分析,这里会把代码切成一个个 Token,比如大小括号,等于号还有字符串等:
clang -fmodules -fsyntax-only -Xclang -dump-tokens main.m
  • 然后是语法分析,验证语法是否正确,然后将所有节点组成抽象语法树 AST:
clang -fmodules -fsyntax-only -Xclang -ast-dump main.m
  • 完成这些步骤后就可以开始IR中间代码的生成了,CodeGen 会负责将语法树自顶向下遍历逐步翻译成 LLVM IR,IR 是编译过程的前端的输出后端的输入:
clang -S -fobjc-arc -emit-llvm main.m -o main.ll
  • 这里 LLVM 会去做些优化工作,在 Xcode 的编译设置里也可以设置优化级别-01,-03,-0s,还可以写些自己的 Pass:
clang -O3 -S -fobjc-arc -emit-llvm main.m -o main.ll
  • 生成汇编
clang -S -fobjc-arc main.m -o main.s
  • 生成目标文件
clang -fmodules -c main.m -o main.o
  • 生成可执行文件
clang main.o -o main
  • 执行
./main

下面是完整步骤:

1. 编译信息写入辅助文件,创建文件架构 .app 文件 
2. 处理文件打包信息 
3. 执行 CocoaPod 编译前脚本,checkPods Manifest.lock 
4. 编译.m文件,使用 CompileC 和 clang 命令 
5. 链接需要的 Framework 
6. 编译 xib 
7. 拷贝 xib ,资源文件 
8. 编译 ImageAssets 
9. 处理 info.plist 
10. 执行 CocoaPod 脚本 
11. 拷贝标准库 
12. 创建 .app 文件和签名
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容