编译静态库遇到的一些问题speex,opus

来源:互联网 发布:北京知果科技怎么样 编辑:程序博客网 时间:2024/05/24 13:27

最近在做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