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

你可能感兴趣的:(iOS 动态库和静态库)