之前合成了静态库.a, 有时候我们会拿到别人提供的静态库,但是编译报错,这时候最先要考虑的一步就是这个静态库是否支持我们编译的架构。怎么查看支持的架构?废话不多说!下面亲自实验一下
第一步:
准备一个静态库.a文件,比如我们之前制作的 libVideoPlayerLib.a,放在桌面的test目录里。
第二步:
- 打开终端:cd 到 libVideoPlayerLib.a 所在的文件夹test下 .
- 查看 libVideoPlayerLib.a 包含几种架构 arch 。 (file 命令)
- 分离出一种架构的.a。(lipo **.a -thin armv7 -output armv7.a)
- 抽离.a文件的object文件.o。(ar -x armv7.a)
- 将.o 转换为 .m。(nm ****.o > ****.m)
Last login: Sun May 5 19:30:20 on ttys004
lzz-Mac-mini:~ suning$ cd /Users/suning/Desktop/test
lzz-Mac-mini:test suning$ file /Users/suning/Desktop/test/libVideoPlayerLib.a
/Users/suning/Desktop/test/libVideoPlayerLib.a: Mach-O universal binary with 4 architectures: [arm_v7:current ar archive random library] [arm64:current ar archive random library]
/Users/suning/Desktop/test/libVideoPlayerLib.a (for architecture armv7): current ar archive random library
/Users/suning/Desktop/test/libVideoPlayerLib.a (for architecture i386): current ar archive random library
/Users/suning/Desktop/test/libVideoPlayerLib.a (for architecture x86_64): current ar archive random library
/Users/suning/Desktop/test/libVideoPlayerLib.a (for architecture arm64): current ar archive random library
lzz-Mac-mini:test suning$ lipo libVideoPlayerLib.a -thin armv7 -output armv7.a
lzz-Mac-mini:test suning$ ar -x armv7.a
lzz-Mac-mini:test suning$ nm VideoPlayerLib.o > VideoPlayerLib.m
6. 打开导出到.m 伪代码
通过伪代码可以了解.m 的实现过程