IOS與其他操作系統中靜態庫與動態庫的用法總結

一、庫的概念

    庫是程序的一種形式,相對於可執行程序而言。目前主要分爲靜態庫與動態庫。

靜態庫在程序編譯時會被連接到目標代碼中,程序運行時將不再需要該靜態庫。

動態庫在程序編譯時並不會被連接到目標代碼中,而是在程序運行是才被載入,因此在程序運行時還需要動態庫存在

二、庫在各操作系統中表現形式

    整個計算機世界,目前分爲Windows與Linux/Unix兩個部分。

    1、Windows:靜態庫爲.lib,動態庫爲.dll。

    2、Linux/Unix:靜態庫爲.a,動態庫爲.so。

    對於基於Linux/Unix的Android與IOS而言:

    1、Android:既可以採用靜態庫(.a),也可以採用動態庫(.so),但是距離應用層程序員比較遠,因爲都被封裝爲JNI格式。

    2、IOS:是所有系統中最複雜一種,下面詳細闡述。

三、IOS中靜態庫與動態庫。

    1、IOS靜態庫:.a與.framework。

    2、IOS動態庫:.dylib與.framework。
    3、IOS的.framework是動態庫,我們自己的.framework是靜態庫;IOS不允許用戶自定義使用動態庫,而只允許開發者使用靜態庫。

    4、我們自己開發的時候只有靜態庫,就是隻有.a與.framework。

    5、a與.framework的區別:

    .a是一個純二進制文件,.framework中除了有二進制文件之外還有資源文件。

    .a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。

    .a + .h + sourceFile = .framework。

    建議用.framework.

    前者開發.Framework,後者開發.a。

    6、a與.framework的相同之處

    1)都是對源代碼的封裝,核心都是.a靜態庫。

    2)打包時候,都要設置平臺,在真機、模擬器通用狀況下,都要將os與simulator兩個文件夾的編譯結果合併。.Framework合併的是靜態庫部分,合併完後再替換原來任意一個Framework文件夾的靜態庫即可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章