1. 程式人生 > >X264移植android問題記錄(No working C compiler found)

X264移植android問題記錄(No working C compiler found)

對於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的檔案,嘗試編譯這個檔案,如果編譯不過,或者找不到庫檔案,等等錯誤,都會報上面的錯誤。真是一個大坑。

最後,祝大家都能順利解決。