可執(zhí)行文件
源代碼是如何編譯成可執(zhí)行文件的呢心赶?我們可以通過clang -ccc-print-phase main.m
命令查看
可見將程序編譯成可執(zhí)行文件的步驟:
源代碼 --> 預(yù)處理器 --> 編譯器 --> 匯編 --> 機(jī)器碼 --> 鏈接 --> 可執(zhí)行文件
靜態(tài)庫和動(dòng)態(tài)庫的區(qū)別
庫:庫就是寫好的、現(xiàn)有的郊丛、成熟的程序代碼的集合。
靜態(tài)庫:鏈接時(shí)會(huì)被完整的復(fù)制到可執(zhí)行文件中毫玖,被多次使用就有多份拷貝廉沮。
動(dòng)態(tài)庫:鏈接時(shí)不復(fù)制,程序運(yùn)行時(shí)由系統(tǒng)動(dòng)態(tài)加載到內(nèi)存孵坚,系統(tǒng)只加載一次粮宛,多個(gè)程序共用,節(jié)省內(nèi)存卖宠。
圖解
靜態(tài)庫的制作
靜態(tài)庫主要有兩種形式:.a 和 .framework
動(dòng)態(tài)庫的形式主要有:.tdb 巍杈、.dylib、.framework 前兩種還沒見過扛伍,最常見的就是.framework的動(dòng)態(tài)庫
靜態(tài)庫制作方式請(qǐng)看:http://www.reibang.com/p/5218d0ea26c9
注意:swift不支持靜態(tài)庫筷畦,只支持動(dòng)態(tài)庫