最近在做ios语音聊天研究,语音压缩需要用到开源库有speex( http://www.speex.org/ ),opus ( http://opus-codec.org/ ) 等
关于speex的中文文档还是比较多的,这里有篇介绍编译speex的文章
http://www.cocoachina.com/applenews/devnews/2012/1105/5029.html
但是speex的官方网站上很明确的说不再更新,建议开发者转到opus
那就开始研究opus吧,首先需要编译成静态库
之前没有编译静态库的经验,在linux上开发C,C++的同学应该有丰富的编译经验。
首次编译opus还是遇到的不少问题,照着上面介绍编译speex的教程
1.首先编译支持i386的,编译成功了。
2.然后编译支持armv6的,最后失败 configure: error: C compiler cannot create executables,并始终没找到解决方案,也耽误了大量时间。
在把百度,谷歌大神问了一遍之后还是没能够找出解决方案,难道我的opus研究到此为止,就这样悲剧收场?!
个人猜想是xcode4.6.2不再支持armv6了,以后证实了会更新博文。
3.算了先不管armv6,这次来编译支持armv7的,竟然神奇的成功了,别高兴太早。
4.然后开始编译支持armv7s的, 一串configure命令 开始编译->make->make install ->make clean一路下来没有报错,并且得到了libopus.a文件,但是运行lipo -info libopus.a来看静态库文件支持的架构,这一看不要紧,
竟然输出的是 Non-fat file: libopus.a is architecture: cputype 12 cpusubtype 11
。。。。。为什不是armv7s 而是cputype 12 cpusubtype 11 ,难道又有问题?
5.午后犯困的我又是百度又是谷歌 迷迷糊糊中查到编译对armv7s的支持时他就是cputype 12 cpusubtype 11
6.嗯 且信他一次,用liop命令把三个分别支持不同架构的.a文件合并成一个.a文件
lipo -create armv7/lib/libopus.a armv7s/lib/libopus.ai386/lib/libopus.a -output libopus.a
7.把新的libopus.a文件和头文件拖到xcode(我的是4.6.2)工程里,写两行代码调用下函数,编译运行模拟器,真机都OK