星期日, 一月 04, 2009

phoneME advanced 編譯筆記

一、JavaME CDC小簡介

從JavaME CDC的全名"Java Micro Edition Connected Device Configuration",可以大致看出他的特性。更進一步的介紹可以參考Sun官方網站,以及wikipedia的介紹。遠祖可以追朔到Personal Java(1999)。

JavaME CDC歷代版本(2001-2007):

  • CDC1.0 (based on JavaSE1.3)
  • CDC1.0.1 (based on JavaSE1.3.1)
  • CDC1.1 (based on JavaSE1.4)

此後設立open source專案,名為phoneME Advanced,基於JavaME CDC1.1,相關資訊可以參考phoneME官方網站(CDC是"phoneME Advanced",不是"phoneME Feature",不要搞錯啦!)。

目前Sun官方的JavaME CDC source code已無法自由取得,網路尚能取得最新的版本為CDC1.0.1,相關資訊及編譯筆記可以參考這篇。如果沒有特殊需求還是從phoneME Advanced入門是比較好的選擇。

二、編譯 phoneME advanced (Linux/x86)

如果是在Linux/x86環境,參考phoneME Advanced MR2 Getting Started Guide中的文章:Build Recipe: Linux/x86 Host Environment 應該可以順利完成。如果發生問題通常是相關工具程式沒有裝好設好。

第一個常碰到的問題是phoneME advanced MR2基於JavaME CDC1.1,意思是說要用JDK1.4才行!在編CDC1.0.1時我試過用JDK1.5/1.6在編譯時指定為1.4相容,但還是過不了。結論就是請用"Sun" JDK "1.4"。

第二問題繼承第一個問題。目前大部分GNU/Linux distribution內建的JRE/JDK為IceTea之類的,要設定換成Sun JDK 1.4才行。一般用update-alternates就能完成,但是常常只有設定java和javac,忘記"javah"!這個會用到。

第三個問題是phoneme advanced的Makefile寫的不太好,如果不是放在根目錄處理(e.g. /phoneme_advanced_mr2)可能會發生問題。(phoneme_advanced-mr2-dev-src-b97-20_nov_2008.zip有這個狀況。)

三、編譯 phoneME advanced (Win32/x86)

phoneME沒有提供Win32-x86的bundle release,要自己到 code repository抓。

編譯環境從無到有,過程簡單列表如下:

  1. 裝jdk1.4; 設定path(check java, javac, javah)
  2. 裝cywin and packages(binutils, bison ,diffutils ,flex ,gcc-g++ ,make ,perl ,subversion ,zip)
  3. 裝VC2005(VC8) express版 + win2003R2 platformSDK,或VC2005標準版(內建platformSDK) ;記得用windows update更新

編譯過程和Linux/x86差不多,值得注意的是win32-x86的Makefile好像有bug,在改某些Makefile flag時要先make clean,不能像Linux可以直接改。

5 意見:

积木 提到...

很有帮助,我参考了您的文章,在ubuntu下编译成功了。

貌似编译pp不需要把目录建立在根目录。

lan 提到...

phoneME advanced 编译还需要在Redhat 7.1 环境下吗?

PTC 提到...

lan:

不需要,根據網站的訊息,phoneME advanced主要是在ubuntu上開發測試的。

lan 提到...

Hi, Petertc:

Thanks. 在PC上已经能编译并运行了.现在我想把他porting 到mips 的一块板子上, 不知道你有没有相关的经验. 目前我只把CVM_TARGET_TOOLS_PREFEX 设定成交叉编译环境的路径, 看上去还是问题多多.
cindy lan

PTC 提到...

lan:
我沒有porting到MIPS的經驗,愛莫能助。可以參考官方論壇或porting guide的資料看看:

http://forums.java.net/jive/category.jspa?categoryID=56

http://wiki.java.net/bin/view/Mobileandembedded/PhoneMEAdvancedGSGTarget

good luck, 成功後也歡迎回饋網友們吧!