iOS 動態庫和靜態庫

一、簡介

靜態庫和動態庫的存在形式

1.靜態庫:.a 和 framework
2.動態庫: .dylib、.tdb 和 .framework

靜態庫和動態庫在使用上的區別

靜態庫:鏈接時,靜態庫會被完整地復制到可執行文件中, 被多次使用就有多份冗余拷貝
動態庫:鏈接時不復制,程序運行時由系統動態加載到內存,供程序調用,系統只加載一次,多個程序共用,節省內存。
注意:項目中如果使用了自制的動態庫,不能被上傳到 AppStore!

了解設備的架構

iPhone4s-iPnone5:i386
iPhone5s-iPhone7 Plus:x86_64

真機:
iPhone3gs-iPhone4s:armv7
iPhone5-iPhone5c:armv7s
iPhone5s-iPhone7 Plus:arm64

支持armv7的靜態庫可以在armv7s上正常運行(armv7 兼容armv7s)

常用終端命令

// 查看靜態庫支持的CPU架構
# lipo -info 靜態庫路徑
lipo -info libname.a(或者libname.framework/libname) 

// 合并靜態庫
# lipo -create 靜態庫存放路徑1  靜態庫存放路徑2 ...  -output 整合后存放的路徑
lipo  -create  libname-armv7.a   libname-armv7s.a   libname-i386.a  -output  libname.a

// 靜態庫拆分
# lipo 靜態庫源文件路徑 -thin CPU架構名稱 -output 拆分后文件存放路徑
# 架構名為armv7/armv7s/arm64等,與lipo -info 輸出的架構名一致
lipo  libname.a  -thin  armv7  -output  libname-armv7.a

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一、什么是庫? 庫是共享程序代碼的方式,一般分為靜態庫和動態庫。 二、靜態庫與動態庫的區別? 靜態庫:鏈接時完整地...
    一杯紅酒mm閱讀 341評論 0 2
  • 靜態庫與動態庫的區別 首先來看什么是庫,庫(Library)說白了就是一段編譯好的二進制代碼,加上頭文件就可以供別...
    吃瓜群眾呀閱讀 12,074評論 3 42
  • 介紹 動態庫形式:.dylib和.framework 靜態庫形式:.a和.framework 動態庫和靜態庫的區別...
    齊滇大圣閱讀 46,333評論 18 251
  • 動態庫和靜態庫 1.動態庫在運行時實時的部署,靜態庫必須在編譯時連接到代碼 2.動態庫加載到內存后可以重復使用,靜...
    程守斌閱讀 257評論 0 0
  • 僅以方便自己查閱記錄前言1.靜態庫和動態庫有什么異同?靜態庫:鏈接時完整地拷貝至可執行文件中,被多次使用就有多份冗...
    190CM閱讀 4,276評論 0 4