Xcode编译过程

Xcode编译过程

打包过程

  • 源码编译
  • 静态库链接
  • 资源编译、优化、导入
  • 配置文件生成
  • 签名打包

Xcode 遇到的错误

  • 语法错误
  • 找不到头文件
  • 找不到声明
  • 重复符号
  • 缺少符号

配置类型

  • infos 项目相关信息
    • plist
    • entitlements
  • build phases 编译各阶段配置
    • Target Dependencies
    • Compile Sources
    • Link with Libraries
    • Run Script
  • build settings编译细节
    • Compiler
    • Linker
    • Assets
    • Packaging

编译工具

  • clang 编译源文件
    • clang -x objective -arch x86_64 -c *.m -o *.o
  • libtool
  • codesign

LLVM

Clang基于LLVM的C语言前端

屏幕快照 2019-07-22 下午11.15.11.png

源代码 -> 语言前端 -> 优化器 -> 后端 -> 机器码

  • 语言前端翻译成统一中间码,进行优化操作
  • 后端把中间码根据不同架构翻译成不同机器识别的机器码

编译器语言前端编译过程

  • 预处理
  • 词法分析Lexer
  • 语法分析,生成AST语法树
  • 中间代码生成

Clang组成部分

  • 预处理: 引入头文件、执行预处理指令、宏定义展开、去除注释
    • clang -E *.m 进行预处理
  • 词法解析:代码句子处理成单词
  • clang -fsyntax-only -fmodules -Xclang -dump-tokens *.m
  • 语法分析: 单词组成语法树
    • clang -fsyntax-only -fmodules -Xclang -ast-dump *.m
  • 中间代码即为bitcode

Link

  • 解决依赖
  • 确定地址引用
  • Mach-O结构组装
  • 生成可执行文件

Clang API

  • LibClang 拿结果,语言封装,作统计

  • Clang Plugins 插件,解析编译过程


    屏幕快照 2019-07-22 下午11.19.44.png
  • LibTooling 独立运行文件,可单独调试

可以用来做什么

  • 定义规范、静态检查
  • 错误、警告自动改正
  • 自动代码l转换
  • 代码统计和优化

Xcode只是一个壳子

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容