Xcode編譯過程

Xcode編譯過程

打包過程

  • 源碼編譯
  • 靜態(tài)庫鏈接
  • 資源編譯、優(yōu)化、導入
  • 配置文件生成
  • 簽名打包

Xcode 遇到的錯誤

  • 語法錯誤
  • 找不到頭文件
  • 找不到聲明
  • 重復符號
  • 缺少符號

配置類型

  • infos 項目相關信息
    • plist
    • entitlements
  • build phases 編譯各階段配置
    • Target Dependencies
    • Compile Sources
    • Link with Libraries
    • Run Script
  • build settings編譯細節(jié)
    • 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

源代碼 -> 語言前端 -> 優(yōu)化器 -> 后端 -> 機器碼

  • 語言前端翻譯成統(tǒng)一中間碼,進行優(yōu)化操作
  • 后端把中間碼根據不同架構翻譯成不同機器識別的機器碼

編譯器語言前端編譯過程

  • 預處理
  • 詞法分析Lexer
  • 語法分析,生成AST語法樹
  • 中間代碼生成

Clang組成部分

  • 預處理: 引入頭文件、執(zhí)行預處理指令、宏定義展開、去除注釋
    • clang -E *.m 進行預處理
  • 詞法解析:代碼句子處理成單詞
  • clang -fsyntax-only -fmodules -Xclang -dump-tokens *.m
  • 語法分析: 單詞組成語法樹
    • clang -fsyntax-only -fmodules -Xclang -ast-dump *.m
  • 中間代碼即為bitcode

Link

  • 解決依賴
  • 確定地址引用
  • Mach-O結構組裝
  • 生成可執(zhí)行文件

Clang API

  • LibClang 拿結果,語言封裝,作統(tǒng)計

  • Clang Plugins 插件,解析編譯過程


    屏幕快照 2019-07-22 下午11.19.44.png
  • LibTooling 獨立運行文件,可單獨調試

可以用來做什么

  • 定義規(guī)范、靜態(tài)檢查
  • 錯誤、警告自動改正
  • 自動代碼l轉換
  • 代碼統(tǒng)計和優(yōu)化

Xcode只是一個殼子

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容