clang常用命令学习

作者: AceKitty | 来源:发表于2018-04-01 20:07 被阅读17次
  • 查看编译源文件需要的几个不同的阶段:
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 文件和签名

相关文章

网友评论

    本文标题:clang常用命令学习

    本文链接:https://www.haomeiwen.com/subject/khnarxtx.html