• KJava虚拟机hack笔记编译


    转载时请注明出处和作者联系方式
    文章出处:http://www.limodev.cn/blog
    作者联系方式:李先静 <xianjimli at hotmail dot 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,编译其它版本的要做相应修改。


    欢迎到Linux mobile development上交流


  • 相关阅读:
    ny 58 最少步数 (BFS)
    Oracle 参数文件
    Oracle 密码文件
    Oracle 表空间与数据文件
    Oracle 回滚(ROLLBACK)和撤销(UNDO)
    Oracle 控制文件(CONTROLFILE)
    Oracle 联机重做日志文件(ONLINE LOG FILE)
    Oracle 常用目录结构(10g)
    Oracle 归档日志
    instance_name,db_name,oracle_sid之间的关系
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167593.html
Copyright © 2020-2023  润新知