本文指的转换为无源码时的转换(有源码那叫编译构建)
涉及工具
- libtool 用于静态库转为动态库
- lipo 用于查看库信息,将fat库拆分为thin库,将thin库合并为fat库
- ar 用于将thin库解压为object文件
基本过程,将fat静态库拆分为thin静态库,再将thin静态库解压为object文件,然后将object文件压缩为thin动态库,最后将thin动态库合并为fat动态库
拆分fat静态库
先查看fat库基本信息,重点是看由哪些指令架构的thin库组成
lipo -info libfat.a
# 输出信息中重点看指令架构
Architectures in the fat file: libfat.a are: x86_64 arm64
按照指令架构拆分fat库
lipo libfat.a -extract x86_64 -output libfoo.a
解压thin静态库
会输出一组.o
文件
ar -x libfoo.a
压缩为thin动态库
注意下,需要手动添加依赖库, -framework 依赖库 -l依赖库
libtool -dynamic *.o -o libfoo_dynamic-x86_64.dylib -framework CoreFoundation -lSystem
将thin动态库合并为fat动态库
lipo -create libfoo_dynamic-x86_64.dylib libfoo_dynamic-arm64.dylib -output ./libfoo_dynamic.dylib
参考
https://pewpewthespells.com/blog/convert_static_to_dynamic.html
发表回复
要发表评论,您必须先登录。