现在的位置: 首页 > 综合 > 正文

CLDC及MIDP参考实现的编译

2018年01月11日 ⁄ 综合 ⁄ 共 2835字 ⁄ 字号 评论关闭
一、编译环境:
     ubuntu6.06+jdk1.4.2+gcc 2.95.4
二、编译内容:
    CLDC1.1+MIDP2.0  linux版  
    //JDK_HOME表示你的JDK的安装目录,如  /usr/
    //编译命令为:make ALT_BOOTDIR=JDK_HOME KVM_DIR=../../../../j2me_cldc/
三、编译步骤:(根据错误一步步修改,每改一步最好重新make一下)
    1、GeneralBase.ioWait()到Waiter.waitForIO()的映射
    com.sun.cldc.io.GeneralBase.ioWait()是CLDC1.04里面的,在CLDC1.1里面对应的是com.sun.cldc.io.Waiter.waitForIO(),按照错误提示一个个改吧。
    2、将CLDC1.04的com.sun.cldc.io.GeneralBase类copy到1.1相应的目录里,再从1.1里面的java.io.DateInputStream和java.io.DateOutputStream两个类里面将方法 writeFloat、writeDouble、readFloat、readDouble四个方法copy到com.sun.cldc.io.GeneralBase里面,并将GeneralBase的 ioWait()这个native方法删除
    3、midp2.0fcs/src/solaris/native/machine_md.h里 添加 #include <setjmp.h> ,解决不识别global.h里的“jmp_buf”标识符的问题
   4、安装Xpm、X11、Xwindow相关的开发库:libX11_dev、libXpm_dev、xlibs_dev,解决找不到 X11/Shell.h 等头文件的问题
    5、midp2.0fcs/src/share/native/kvm/midpServices.c的宏    ERROR_THROW  改成 THROW
    6、midp2.0fcs/src/share/native/kvm/midpEvents.c:
void Java_com_sun_midp_lcdui_Events_open(void) {
    Java_com_sun_cldc_io_j2me_events_PrivateInputStream_open();
}

void Java_com_sun_midp_lcdui_Events_readInt(void) {
    Java_com_sun_cldc_io_j2me_events_PrivateInputStream_readInt();
}

void Java_com_sun_midp_lcdui_Events_readUTF(void) {
    Java_com_sun_cldc_io_j2me_events_PrivateInputStream_readUTF();
}
改成:
void Java_com_sun_midp_lcdui_Events_open(void) {
    //Java_com_sun_cldc_io_j2me_events_PrivateInputStream_open();
}

void Java_com_sun_midp_lcdui_Events_readInt(void) {
    //Java_com_sun_cldc_io_j2me_events_PrivateInputStream_readInt();
    JVM_EventsReadInt();
}

void Java_com_sun_midp_lcdui_Events_readUTF(void) {
    //Java_com_sun_cldc_io_j2me_events_PrivateInputStream_readUTF();
    JVM_EventsReadUTF();
}
    7、midp2.0fcs/src/solaris/native/machine_md.h的宏   SLEEP_UNTIL  改成  SLEEP_FOR
    8、midp2.0fcs/build/share/makefiles/kvm/VM.gmk修改:
vpath %.c $(KVM_DIR)/kvm/VmCommon/src
vpath %.c $(KVM_DIR)/kvm/VmExtra/src
改为:
vpath %.c $(KVM_DIR)/kvm/VmCommon/src
vpath %.c $(KVM_DIR)/kvm/VmExtra/src
vpath %.c $(KVM_DIR)/kvm/VmExtra/src/fp
    9、midp2.0fcs/build/share/makefiles/kvm/Defs.gmk修改:
KVM_DEF_SRC += cache.c class.c fields.c frame.c garbage.c global.c /
           interpret.c loader.c native.c pool.c thread.c  /
           nativeCore.c loaderFile.c runtime_md.c events.c /
           hashtable.c profiling.c StartJVM.c /
           verifier.c verifierUtil.c log.c stackmap.c execute.c /
           inflate.c jar.c kni.c
改为:(在后面添加,要注意每行前面的空白不是空格是/t)
KVM_DEF_SRC += cache.c class.c fields.c frame.c garbage.c global.c /
           interpret.c loader.c native.c pool.c thread.c  /
           nativeCore.c loaderFile.c runtime_md.c events.c /
           hashtable.c profiling.c StartJVM.c /
           verifier.c verifierUtil.c log.c stackmap.c execute.c /
           inflate.c jar.c kni.c /
           e_rem_pio2.c e_sqrt.c fp_bytecodes.c k_cos.c k_rem_pio2.c k_sin.c k_tan.c /
           s_ceil.c s_copysign.c s_cos.c s_fabs.c s_floor.c s_scalbn.c s_sin.c s_tan.c /
           w_sqrt.c resource.c fp_math.c

注:有人碰到检验时发生段错误,我没碰到,不知什么原因。

抱歉!评论已关闭.