IOS静态库重新封装

这篇博客详细介绍了如何在iOS开发中进行静态库的拆分与合并操作,包括使用`ar`和`lipo`命令处理不同CPU架构的静态库,以及如何在Xcode中切换生成Release/Debug模式的静态库,并解决缺少armv7s架构的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拆分及合并静态库

拆分

参考:
https://blog.youkuaiyun.com/xiaolei251990/article/details/82852388
https://blog.youkuaiyun.com/yiyunhzy/article/details/27523251
静态库是目标文件的简单链接,使用linux的ar拆分静态库:

ar -t xx.a // 查看有哪些.o模块
ar -x xx.a // 拆分出.o

此时报错:
xxx.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
胖文件,应该是这个静态库是多个cpu架构的静态库组成的,使用lipo 查看并进行拆分:

lipo -info xx.a // 查看包含的cpu架构的库
lipo xx. a -thin armv7 -output xx_armv7.a // 拆分出armv7的库
lipo xx. a -thin armv7s -output xx_armv7s.a

拆分后,再使用ar即可获得.o文件。
mac上,使用:

otool -Vf xx.lib // 查看包含的cpu架构等信息

可以获得此二进制文件包含的cpu架构。

otool -tv xx.o // 查看汇编代码

查看反编译代码。

合并

用ar合并.o成.a

ar cru libABC.a *.o // 合并.o文件
ranlib libABC.a // 更新静态库的符号索引表,相当于ar -s?

得到各个类型的a后,用lipo合并成胖文件

lipo -create xx_armv7.a  xx_arm64.a -output xx.a // 合并静态库成胖文件
lipo -create 模拟器.a  真机.a -output 目标地址/最终.a

切换生成release/debug

xcode 10的菜单栏 - Product - Scheme - Edit Scheme,打开窗口,将Run - info - Build configuration改为release。

没有armv7s的静态库

xcode 10全部按默认设置,生成的静态库只有arm64,armv7,没有armv7s。
原因是targets的设置问题。(可以同时把project也改掉)

  1. Build Settings - Architectures 默认为: $(ARCHS_STANDARD),添加一项armv7s(似乎默认没有包含)
  2. 确定Vaild Architectures中要有armv7s(默认有)
  3. 确定Build Active Architectures Only里面,对应的release或debug为No(或者直接把这项设置为No)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值