Ubuntu下進行Android源碼的編譯

    費了將近一週的時間,Android源碼和對應Freerunner上的源碼才下載下來。上週根本不懂repo,也不知道下載中的具體狀態,只知道一直在下,但遇到網絡中斷,重新啓動就不知道是繼續還是重新開始了。這周,大概瞭解了manifest.xml的作用,也對下載過程有了一個瞭解。就是這樣也下載了兩天一夜,在宿舍也用同學的本下載,結果慢的要死,下了兩天也只下了一半不到,尤其是經常會出現錯誤。不過那句循環語句還是很給力,還算比較幸運,今早上一看,臺式機這邊下載成功了,真是幸運。

    下載完後,一定要先備份。

    最初我是想在Fedora下進行make文件系統,但Fedora上還沒有裝相應的編譯環境,尤其是JDK1.5,因此首先就安裝它。在sun網站上下載了jdk.1_5_0_22-linux-i586-rpm.bin,執行./jdk.1_5_0_22-linux-i586-rpm.bin後,在/etc/profile中增加環境變量:

export JAVA_HOME=/usr/java/jdk1.5.0_22 

export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin 

export CLASSPATH=.:/usr/java/jdk1.5.0_22/lib:/usr/java/jdk1.5.0_22/jre/lib:$CLASSPATH 

    之後進行註銷後重新登錄,輸入java -version會返回對應的java版本則jdk安裝成功。(網上說JDK1.6不行,因此選擇的是jdk1.5)

    安裝完JDK後,再安裝其他的編譯環境,如:flex,bison,gperf,python,valgrind,curl,git,build-essential等,用yum安裝ncurses-devel libX11-devel.i686 readline-devel,但是libsdl-dev,libesd0-dev,libwxgtk2.6-dev利用yum無法找到,因此跳過。

     進入文件系統的根目錄進行make。

     總是報錯,可能是由於編譯環境裝的有問題,不知道怎麼解決,網上關於Fedora編譯環境的安裝的相關資料也不能解決問題,並且google官方提供的是ubuntu下的安裝過程,幸好還有一個ubuntu的虛擬機,直接進入ubuntu的環境進行make。

 

 

     進入ubuntu後,仍然面臨編譯環境的安裝,除了JDK外,直接運行apt-get install -y git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev即可,這倒是方便。在安裝jdk1.5時,由於ubuntu下不能安裝rpm軟件包,將rpm轉換爲deb包失敗,因此就直接在/usr中新建java文件夾,將jdk.1_5_0_22-linux-i586.bin考入java文件夾後運行./jdk.1_5_0_22-linux-i586.bin,將jdk安裝到此處,再添加環境變量即可。(注:jdk.1_5_0_22-linux-i586.bin與jdk.1_5_0_22-linux-i586-rpm.bin的區別就在於運行後者的時候,會固定將軟件包安裝在/usr/java文件夾下,而前者需要自己設定安裝位置,也就是需要自己創建java文件夾,並在java文件夾下操作)。

    編譯環境安裝完成,進入文件系統根目錄進行make。

   出現以下幾個問題:

   1、symbol lookup error: /usr/lib/libmpfr.so.4: undefined symbol: __gmp_get_memory_functions 並停止編譯

   解決方法:之前的gmp版本是4.1.4,直接編譯安裝4.3.0的版本(安裝過程:下載gmp-4.3.0.tar.bz2,將其解壓後運                     行./configure;make;make install即可)。不知道方法對不對,但好像解決了上面的問題。

    2、出現lzo/lzo1x.h: No such file or directory和external/mtd-utils/mtd-utils/compr_lzo.c:29: fatal error: lzo/lzo1x.h: No     such file or directory compilation terminated的問題,並停止編譯

    解決方法:apt-get install liblzo2-dev,在網上進行的搜索,也沒有具體答案,安裝後編譯也不再出錯。

    3、"mkimage" command not found 並停止編譯

    解決方法:從ftp://ftp.koansoftware.com/public/linux/mkimage/下載mkimage二進制文件,將其添加到/usr/bin。之後在進行      文件系統的make,通過。

   目前文件系統還在編譯過程中,分析造成上面問題的原因應該是編譯環境沒有裝好,這可能涉及到一開始裝ubuntu系統時有些軟件包就沒有裝上,之後要在同學的ubuntu上試下,感覺如果正常按照教程安裝編譯環境的話,不應該出現上面三個問題。

 

參考資料:

1、jdk1.5的安裝:http://www.linuxdiyf.com/viewarticle.php?id=5992      http://wenson.javaeye.com/blog/65292

2、Fedora13下編譯android:http://kongweile.javaeye.com/blog/770377

3、ubuntu下編譯環境的安裝:http://zhanglibin1986.javaeye.com/blog/778219

4、關於mkimage:http://www.quickembeddedtips.com/resolving-mkimage-command-not-found-u-boot-images-will-not-be-built-error

 

PS:現在還在make過程中,上面的內容主要是做一下記錄方便以後參考,如果接下來make出錯,會繼續貼上解決方法。

 

萬里長征的第一步已經走出去了,加油。

發佈了24 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章