Ubuntu下進行Android源碼的編譯

來源:互聯網
上載者:User

    費了將近一周的時間,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出錯,會繼續貼上解決方案。

 

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.