靜態(tài)庫和動態(tài)庫的區(qū)別

可執(zhí)行文件

源代碼是如何編譯成可執(zhí)行文件的呢?我們可以通過clang -ccc-print-phase main.m命令查看

clang查看.png

可見將程序編譯成可執(zhí)行文件的步驟:
源代碼 --> 預(yù)處理器 --> 編譯器 --> 匯編 --> 機器碼 --> 鏈接 --> 可執(zhí)行文件

靜態(tài)庫和動態(tài)庫的區(qū)別

庫:庫就是寫好的、現(xiàn)有的、成熟的程序代碼的集合。

靜態(tài)庫:鏈接時會被完整的復(fù)制到可執(zhí)行文件中,被多次使用就有多份拷貝。

動態(tài)庫:鏈接時不復(fù)制,程序運行時由系統(tǒng)動態(tài)加載到內(nèi)存,系統(tǒng)只加載一次,多個程序共用,節(jié)省內(nèi)存。

圖解

靜態(tài)庫和動態(tài)庫的區(qū)別.png

靜態(tài)庫的制作

靜態(tài)庫主要有兩種形式:.a 和 .framework
動態(tài)庫的形式主要有:.tdb 、.dylib、.framework 前兩種還沒見過,最常見的就是.framework的動態(tài)庫
靜態(tài)庫制作方式請看:http://www.itdecent.cn/p/5218d0ea26c9

注意:swift不支持靜態(tài)庫,只支持動態(tài)庫

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

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容