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

重点: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
出现问题的.a

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容