<p id="qitwt"></p>
      1. <object id="qitwt"><strong id="qitwt"></strong></object>
        <p id="qitwt"></p>
        <li id="qitwt"></li>
        <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
        <p id="qitwt"><label id="qitwt"></label></p>
      2. <acronym id="qitwt"></acronym>
        <p id="qitwt"></p>
        免費開源的iOS開發學習平臺

        iOS編譯過程:2-編譯流程(build)

        iOS編譯流程

        當你在XCode中,選擇build的時候(快捷鍵command+B),會執行如下過程:

        • 編譯信息寫入輔助文件,創建編譯后的文件架構(name.app)
        • 處理文件打包信息,例如在debug環境下
        Entitlements:
        {
            "application-identifier" = "app的bundleid";
            "aps-environment" = development;
        }
        
        • 執行CocoaPod編譯前腳本。例如對于使用CocoaPod的工程會執行CheckPods Manifest.lock
        • 編譯各個.m文件,使用CompileC和clang命令。例如:
        CompileC ClassName.o ClassName.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
        export LANG=en_US.US-ASCII
        export PATH="..."
        clang -x objective-c -arch x86_64 -fmessage-length=0 -fobjc-arc... -Wno-missing-field-initializers ... -DDEBUG=1 ... -isysroot iPhoneSimulator10.1.sdk -fasm-blocks ... -I 上文提到的文件 -F 所需要的Framework  -iquote 所需要的Framework  ... -c ClassName.c -o ClassName.o
        

        其中:

        clang是實際的編譯命令
        -x      objective-c 指定了編譯的語言
        -arch   x86_64制定了編譯的架構,類似還有arm7等
        -fobjc-arc 一些列-f開頭的,指定了采用arc等信息。這個也就是為什么你可以對單獨的一個.m文件采用非ARC編程。
        -Wno-missing-field-initializers 一系列以-W開頭的,指的是編譯的警告選項,通過這些你可以定制化編譯選項
        -DDEBUG=1 一些列-D開頭的,指的是預編譯宏,通過這些宏可以實現條件編譯
        -iPhoneSimulator10.1.sdk 制定了編譯采用的iOS SDK版本
        -I 把編譯信息寫入指定的輔助文件
        -F 鏈接所需要的Framework
        -c ClassName.c 編譯文件
        -o ClassName.o 編譯產物
        
        • 鏈接需要的Framework,例如:Foundation.framework,AFNetworking.framework,ALiPay.fframework
        • 編譯xib文件
        • 拷貝xib,圖片等資源文件到結果目錄
        • 編譯ImageAssets
        • 處理info.plist
        • 執行CocoaPod腳本
        • 拷貝Swift標準庫
        • 創建.app文件和對其簽名。

        原文地址:iOS編譯過程的原理和應用

        青青草国产成人久久_jizzjizz日本护士高清_亚洲 另类 国产 另类_99久久免费精品色老
        <p id="qitwt"></p>
          1. <object id="qitwt"><strong id="qitwt"></strong></object>
            <p id="qitwt"></p>
            <li id="qitwt"></li>
            <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
            <p id="qitwt"><label id="qitwt"></label></p>
          2. <acronym id="qitwt"></acronym>
            <p id="qitwt"></p>