靜態庫和動態庫:
1.靜態庫:.a和.framework
@1.鏈結時,靜態庫會被完整地複製到可執行檔案中,被多次使用就有多分冗餘
@2.核心**封裝,不讓別人看
lipo -info +靜態庫 檢視靜態庫支援哪些架構
i386:iphone模擬器 3gs ->4s
x86_64:iphone模擬器 5s -> 6p
arm7:iphone 3gs ->4s
arm7s:iphone 5 ->5c
arm64:iphone 5s - 6p
debug和release版本
靜態庫檔案版本(4種)
1.真機-debug版本 2.
真機-release版本 3.
模擬器-debug版本 4.
模擬器-release版本
除錯版本(debug版本) vs 發布版本(release版本)
- 除錯版本會包含完整的符號資訊,以方便除錯
- 除錯版本不會對**進行優化
- 發布版本不會包含完整的符號資訊
- 發布版本的執行**是進行過優化的
- 發布版本的大小會比除錯版本的略小
- 在執行速度方面,除錯版本會更快些,但不意味著會有顯著的提公升
合併靜態庫.a檔案
lipo -create debug-iphoneos/libtools.a debug-iphonesimulator/libtools.a -output libtools.a
@1.合併的好處,開發過程中既可以在真機上除錯又可以在模擬器上除錯
@2.合併.a壞處,如果靜態庫太大,合併打包後,會非常大,因此很多第三方的靜態庫的.a是區分版本的
@3.今後在使用靜態庫時要注意版本
2.動態庫:.dylib和.framework
@1.鏈結時不複製,程式執行時由系統動態載入到記憶體,供程式呼叫,系統只載入一次,多個程式共用,節省記憶體
靜態庫的製作
最近公司需要把一套流程封裝起來,採用了靜態庫的做法,順便記錄下靜態庫的製作過程。新建工程選擇framework,當然選擇static library也可以,static library的.a h 資源檔案就相當於framework,尤其是資源檔案,如果用static library,還需單獨供給使用...
靜態庫製作
靜態庫 要被包含到源程式中的庫 優點 執行速度快 缺點 占用系統資源比較多 使用的場合 對時間要求很高的場合 靜態庫的製作 1 把所有的源程式 c檔案 製作成目標檔案 o 檔案 gcc c mul.c o mul.o gcc c sub.c o sub.o gcc c add.c o add.o 2...
靜態庫和動態庫的製作
在現實工作中,要實現 的共享但又不想讓別人知道自己的源 那我們該怎麼做呢?我們可以利用動態庫來保護自己寫的源 不被別人竊取。lib目錄檔案 makefile cc gcc 用ar命令對目標檔案歸檔 格式為ar rcs 生成靜態庫檔案 libtest.a myalib.o ar rcs libtest...