一、簡介
靜態庫和動態庫的存在形式
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