費了將近一周的時間,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出錯,會繼續貼上解決方案。
萬裡長征的第一步已經走出去了,加油。