许多第三方提供的.a文件(一般是那些SDK),嵌入到我们的xcode项目后,生成不会报错。
一部分粗心的SDK提供方,或者我们自己做的.a文件,就会有报错,常见的就是不是armv7结构,或者不是armv7s结构,如果在模拟器中运行,会报不是i386结构。
原因是:armv7是支持比iphone5旧的那些设备,armv7s是iphone5或ipad4或者以后的新设备,i386是mac的。
这些名字指的是处理器所用的指令集。
因此常常发生的是.a文件要么ipad mini可以Build成功,但iphone5不能Build成功。要么就相反,让人抓狂。
解决办法是做一个全面支持各指令集的.a文件。
前提是分别生成4个支持对应指令集的.a文件。在Build静态库时,设备分别选择不同的真机以及模拟器,分别Build出来,备份到一个文件夹,并且取不同的名字。
此时可以用命令来检查导出的.a文件所支持的指令集,lipo -info XXX.a ,要保证4个都是不同的才能进行下一步 ,注意:armv7s的显示名是cputype (12) cpusubtype (11)
然后以命令 lipo -create XXXX_V7.a XXXX_V7s.a -output XXXX_all.a 合成他们成为新的.a文件。
最后替换掉报错的.a文件即可。
转载自:http://small.qiang.blog.163.com/blog/static/978493072013102105451218/
相关推荐
All/lib/libssl.a are: armv7 armv7s i386 x86_64 arm64 All/lib/libcrypto.a are: i386 armv7 armv7s x86_64 arm64
已经适配了armv7 armv7s arm64 i386 x86_64架构的zbar,从github搬运过来。
研究了一天,iOS ffmpeg 64位支持, FFMpeg iOS i386 x86_64 armv7 armv7s arm64
ffmpeg 2.4.2 for iOS静态库
目前ffmpeg最新版2.8的iOS静态库和头文件,已经在iOS媒体播放器里测试过。
最新ffmpeg2.6 支持i386 x86_64 armv7 armv7s arm64架构
在mac下一键编译ffmpeg库,支持了armv7 armv7s i386 x86_64 arm64这几个架构,绝对业界良心! 如果无法正常编译的话,试着完善下环境,比如:yasm、automake、fdk-aac、git 、lame、libass、libtool、libvorbis、...
17.8M 裁剪版本,支持H.264解码,mp4视频录制,aac编码,解码
FFmpeg 2.5.3 编译的静态库,在Xcode6 iOS8上编译, 已整合(arm64 armv7s armv7 x86_64 i386)。
ios平台的支持armv7,armv7s,i386,arm64和x86_64的通用openssl静态库
静态库 包含arm64,armv7s,armv7,x86_64,i386
FFmpeg 2.6.1 编译的静态库,在Xcode6 iOS8上编译, 已整合(arm64 armv7s armv7 x86_64 i386)。
最新版1.53开源libjpeg-turbo生成iOS静态库libjpeg.a libturbojpeg.a
目前最新版2.5.3的iOS静态库和头文件,已经在iOS媒体播放器里测试过。
ffmpeg更新比较快,这是目前最新版2.3.3的iOS静态库和头文件,刚编译成功并用于iOS媒体播放器。
最新编译的 FFmpeg 视频编码函数库,支持 arm64、armv7、armv7s、i386、x86-64 ,文件资源里面有编译好的 FFmpeg-iOS 函数,如果需要重新编译里面有 执行脚本 build-ffmpeg.sh 和源码文件。
基于OpenSSL最新的1.0.2m版本编译 包含了arm64 armv7 armv7s i386 x86_64 和一个通用的库
openssl ios平台依赖库(.a)和头文件(.h) armv7 armv7s arm64 i386 x86_64。包含.a、.h、openssl_1.0.2r源码
最新编译的 x264 视频编码函数库,支持 arm64、armv7、armv7s、i386、x86-64 ,文件资源里面有编译好的 x264-iOS 函数,如果需要重新编译里面有 执行脚本 build-x264.sh 和源码文件。
最新编译的 FDK-ACC (0.1.6) 音频编码函数库,支持 arm64、armv7、armv7s、i386、x86-64 ,文件资源里面有编译好的 x264-iOS 函数,如果需要重新编译里面有 执行脚本 build-fdk-aac.sh 和源码文件。