对于x264移植到android的步骤,大多数人都能按照文档一步步做下来,有的人能一步成功,有的则大费周折,甚至有的人止步于一些错误。
根据我的经验,这个过程最大的拦路虎就是错误“No working C compiler found” 所以在标题也加了这个,方便更多需要的人搜索到。
如果大家为这个头痛,希望大家把这篇blog看到最后,这个过程也是我犯错误和理解错误,直到最后解决的过程。
=======================================================================================================================
网上搜索了很多这方面的资料,不知道是ndk版本问题,还是x264代码版本的问题。网上的方法都不成功,直到遇到这篇帖子,简单的就解决了问题。
http://ubuntuforums.org/showthread.php?t=1757181
I just downloaded it from here to try it:
http://www.videolan.org/developers/x264.html
I ran ./configure. It complained that I didn't have an assembler and suggested I ran ./configure --disable-asm. Then all seemed to compile OK.
How did you install gcc? From the repositories?
其实,只要简简单单做几步就能编译出libx264.a了
1,下载x264的代码
2,解压到ubuntu的目录里, 我的是/home/seafit/project/x264lib
3,运行./configure ,如果出错按照提示运行 ./configure --disable-asm. 然后就成功了。
4,运行make。 一会就编译出libx264.a了。
我的配置是ubuntu14.04 + android-ndk-r10 + x264的代码是昨天最新的。
============================================================================================================================
我编译出libx264.a之后,兴奋得不行,终于把问题解决了,所以一开始记录了上面的过程和解决办法。 但是突然发现上面编译出来的libx264.a是在linux下的,android下的libx264.a是需要交叉编译的,而上面根本就没有交叉编译。 其实也就是configure帮助里的3个重要的选项
Cross-compilation:
--host=HOST build programs to run on HOST
--cross-prefix=PREFIX use PREFIX for compilation tools
--sysroot=SYSROOT root of cross-build tree
如果,不加上面的参数,是可以直接一步到位编译出libx264.a的,
我配置的步骤一直是按照http://blog.csdn.net/huahuahailang/article/details/27373169 这篇文章来做的。每一步都按照做了,结果还是出“No working C compiler found”
后来就仔细看configure文件,后来又看到了config.log 这个帮了很大的忙,里面能把路径完完全全显示出来。咋一看也没发现什么问题。因为以前经常做二进制编辑,所以我用notepad++的时候,总是会显示所有符号,对于换行,结尾等符号,notepad++是特别明显的,后来终于发现了每行结尾都是CRLF. 问题就出在这里。
在NOTEPAD++的菜单->编辑->EOL conversion,里将格式选为unix格式,再编译,就通过了。 大家看到这个操作就知道是干嘛了。
这个问题隐藏得太深了,我折腾了几乎整整一天,本来一直寄希望于网上能找到解决办法,基本上google,百度等等都翻遍了。后来不得不硬着头皮自己解决,所以看日志才是真正找原因的办法。
另外 “No working C compiler found” 这个错误很容易让人疑惑,绝大多数人都会认为是编译工具找不到,实际不是。
具体的过程是生成一个conftest.c的文件,尝试编译这个文件,如果编译不过,或者找不到库文件,等等错误,都会报上面的错误。真是一个大坑。
最后,祝大家都能顺利解决。