查看静态库.a文件编译报错

查看静态库.a文件编译报错_第1张图片
重点:symbol(s) not found for architecture arm64

该静态库不支持arm64.

##armv6
iPhone、iPhone 3G
iPod 1G、iPod 2G

##armv7
iPhone 3GS、iPhone 4
iPod 3G、iPod 4G、iPod 5G
iPad、iPad 2、iPad 3、iPad Mini

##armv7s
iPhone 5、iPhone 5C
iPad 4

##arm64
iPhone 5S   iPhone 6   iPhone 6Plus
iPad Air, Retina iPad Mini

Architectures

该编译选项指定了工程将被编译成支持哪些指令集,支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大。

指令集是向下兼容的。比如,armv7s指令集的设备,可以兼容运行使用armv7、armv6编译的程序。

错误分析:
打包以后的库文件,我们查看信息
然后打入如下命令:lipo -info .a文件完整路径

查看静态库.a文件编译报错_第2张图片
没有报错的.a
出现问题的.a

这个静态库只支持x86_64(x86的库是在模拟器上跑的) . 我的工程中Valid Architectures和Architectures中均包含了arm64的指令集,这就是说明我需要编译的app最终要支持arm64的,而程序中用到的静态库并没有arm64,导致了出错.

解决:提供支持arm64的静态库文件,就可以正常编译通过了.

你可能感兴趣的:(查看静态库.a文件编译报错)