KJava虚拟机hack笔记-编译
1,161 views| 2008-11-18| 李先静| KVM hack notes| | 发表评论转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <xianjimli@gmail.com>
KJava虚拟机有两个版本,一个针对智能手机等设备的phoneme_advanced,另一个是针对传统手机(feature phone) 等设备的的phoneme_feature。去年我花过一点时间研究phoneme_advanced,在基于DirectFB的实现下,成功的运行了一个简单MIDlet程序。
最近要移植KVM到broncho平台上,时隔一年,我发现phoneme_advanced的实现还是非常不完善,里面有很多低级错误,虽然改掉这些错误并不困难,但是我怀疑是否有人使用这个版本做过产品,所以这一次我决定移植phoneme_feature。
编译phoneme_feature比phoneme_advanced要容易得多,基本上没有遇到什么问题。
1.下载并安装j2sdk-1_4_2_15-linux-i586.bin。注意不要使用最新版本的JDK,否则出现语法上不兼容的问题。
2.下载并解圧phoneme_feature-mr3-rel-src-b01-17_jul_2008.zip。经过验证这个版本还可以,比使用SVN中的最新代码更可靠。
3.设置环境变量,我们把它放到脚本evn.sh中。
#!/bin/bash
export PREFIX=${PREFIX_USR_LOCAL/--prefix=/}
if [ "$1" = "" ]
then
echo "Usage: . env.sh ARCH(i386|arm)"
return;
fi
export ARCH="$1"
export CPU=$ARCH
export MEHOME=$PWD
export ENABLE_PCSL=true
export BUILD_OUTPUT_DIR=$MEHOME/output
export CLDC_DIR=$MEHOME/cldc
export JVMWorkSpace=$CLDC_DIR
export JVMBuildSpace=$BUILD_OUTPUT_DIR/cldc
export MIDP_OUTPUT_DIR=$BUILD_OUTPUT_DIR/midp
export MIDP_BUILD_DIR=$MEHOME/midp/build/linux_gtk_gcc
if [ "$ARCH" = "arm" ]
then
export CPU_ALIAS="arm"
export TARGET_CPU="arm"
export CLDC_BUILD_DIR=${JVMWorkSpace}/build/linux_arm
export CLDC_DIST_DIR=${JVMBuildSpace}/linux-$CPU_ALIAS/dist
else
export CPU_ALIAS="x86"
export TARGET_CPU="i386"
export CLDC_BUILD_DIR=${JVMWorkSpace}/build/linux_i386
export CLDC_DIST_DIR=${JVMBuildSpace}/linux_i386/dist
fi
export DIRECTFB_INSTALL_DIR=$PREFIX
export PCSL_PLATFORM=linux_"$ARCH"_gcc
export PCSL_OUTPUT_DIR=$BUILD_OUTPUT_DIR/pcsl
export TOOLS_DIR=$MEHOME/tools
export TOOLS_OUTPUT_DIR=$BUILD_OUTPUT_DIR/tools
4.编译,我们把它放到脚本build.sh中。
#!/bin/bash cd $MEHOME/pcsl make clean make NETWORK_MODULE=bsd/generic cd $MEHOME cd $CLDC_BUILD_DIR make clean make USE_MIDP=true CVM_DEBUG=true USE_DIRECTFB=true USE_QT_FB=false ENABLE_PCSL=true cd $MIDP_BUILD_DIR make clean make SUBSYSTEM_LCDUI_MODULES=platform_widget PLATFORM=linux_gtk SUBSYSTEM_EVENTS_MODULES=slave_mode INCLUDE_SHELL_SCRIPTS=true cd $MEHOME
5.安装,我们把它放到脚本install.sh中。
#!/bin/bash
if [ "$PREFIX" = "" ]
then
echo "PREFIX is not defined"
else
INSTALL_PATH=$PREFIX
rm -rf $INSTALL_PATH/java
mkdir -p $INSTALL_PATH/java
echo "cp -rf $CDC_DIST_DIR $INSTALL_PATH/java/cdc"
cp -rf $MIDP_OUTPUT_DIR $INSTALL_PATH/java/j2me
cp -f $CLDC_DIST_DIR/bin/cldc_vm* $INSTALL_PATH/java/j2me/bin
mv $INSTALL_PATH/java/j2me/classes.zip $INSTALL_PATH/java/j2me/classes.jar
rm -rf $INSTALL_PATH/java/j2me/classes
rm -rf $INSTALL_PATH/java/j2me/generated/
rm -rf $INSTALL_PATH/java/j2me/obj
rm -rf $INSTALL_PATH/java/j2me/ROM*
fi
我这里编译的是基于GTK+实现的MIDP,编译其它版本的要做相应修改。
Share
Tags
Recent Posts
Most Viewed
- 系统程序员成长计划写作提纲 - 19,605 views
- Android IPC机制详解 - 6,277 views
- 系统程序员成长计划-走近专业程序员(上) - 6,253 views
- 系统程序员成长计划-写得又快又好的秘诀(一) - 5,391 views
- 系统程序员成长计划-背景知识 - 5,070 views
- i++循环与i–循环的执行效率 - 4,712 views
- 系统程序员成长计划-Write once, run anywhere(WORA)(上) - 4,701 views
- 系统程序员成长计划-走近专业程序员(下) - 4,254 views
- Linux下的调试工具 - 4,017 views
- Advanced Linux Sound Architecture (ALSA) 研究笔记 - 4,017 views
- 系统程序员成长计划-序 - 3,985 views
- 系统程序员成长计划-写得又快又好的秘诀(三) - 3,930 views
- 中国人与自由软件文化研究(搞笑版) - 3,735 views
- Android中的MessageQueue,Handler,Looper和Thread - 3,686 views
- 答复:我不会OOO,仍然可以XXX - 3,659 views
Categories
- Android (28)
- Broncho-A1-Hack (6)
- DirectFB (7)
- FTK(嵌入式GUI) (24)
- GTK+ (29)
- KVM hack notes (8)
- Linux Mobile (65)
- Management (5)
- Mozilla (9)
- Open Source (5)
- Programming (34)
- Tools (9)
- Uncategorized (23)
- Win32 (3)
- X Windows (31)
- 沉思录 (29)
- 系统程序员成长计划 (67)
Blogroll
gallery
Linux guru
推荐网站
Recent Comments
- Dig on 嵌入式GUI FTK设计与实现-事件源(FtkSource)
- 用心生活每一天 » GNU gprof: linux profiling tools 使用 on gcc profiling的工作原理
- JavaScript for: i++ vs i–-传播、沟通、分享-一直“有你” on i++循环与i–循环的执行效率
- Frankly Law on 嵌入式GUI FTK介绍(11)-交叉编译
- tracing on Linux下的调试工具
- ndljsn on FTK移植指南(初稿)
- tracing on 爬塘朗山
- tracing on GTK+(基于DirectFB)的字体处理
- Kely on 系统程序员成长计划写作提纲
- tracing on 爬塘朗山



November 18th, 2008