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阅读 344评论 0 2
  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 12,146评论 3 42
  • 介绍 动态库形式:.dylib和.framework 静态库形式:.a和.framework 动态库和静态库的区别...
    齐滇大圣阅读 46,409评论 18 251
  • 动态库和静态库 1.动态库在运行时实时的部署,静态库必须在编译时连接到代码 2.动态库加载到内存后可以重复使用,静...
    程守斌阅读 262评论 0 0
  • 仅以方便自己查阅记录前言1.静态库和动态库有什么异同?静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗...
    190CM阅读 4,336评论 0 4