一、简介
静态库和动态库的存在形式
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