CLDC及MIDP参考实现的编译
2006-08-26 14:19
225 查看
一、编译环境:
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
注:有人碰到检验时发生段错误,我没碰到,不知什么原因。
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
注:有人碰到检验时发生段错误,我没碰到,不知什么原因。
相关文章推荐
- CLDC及MIDP参考实现的编译 - cwmbecoming的专栏 - CSDNBlog
- CLDC1.1+MIDP2.0的编译问题
- CATransition的动画效果类型及实现方法--老代码备用参考
- 发布一个参考ssdb,用go实现的类似redis的高性能nosql:ledisdb
- 实现 libYUV打包编译成so文件,并实现NV21转yuv420转码操作
- [自用门户]jeecms 三级页面内容模板,重点是实现<hr />标签分割线可以参考,css任意位置及长短
- C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?
- 在Eclipse里实现Ant自动编译
- 一个最符合中国国情的工作流设计参考(包括PHP实现)
- VS2015编译错误:调用的目标发生了异常--->此实现不是Windows平台FLPS验证的加密算法的一部分。
- WinCE5.0/6.0下命令行实现自动编译
- rsync实现windows与nginx主机端文件同步(参考文档)
- 发布一个参考ssdb,使用go类似的实现redis高性能nosql:ledisdb
- 根据sitemap配置生成无限级跨frame菜单的实现方式(含100%脚本源码参考)
- 通用双向链表的设计(参考Linux系统中的实现)
- vc2005编译出来的程序实现绿色版,即无须安装运行库
- 基于分布式的云笔记实现(参考某道云笔记)
- 最短编译距离(Minimum Edit Distance)算法及java实现
- MVC数据验证原理及自定义ModelValidatorProvider实现无编译修改验证规则和错误信息
- 栈的实现 (数据结构 严蔚敏 清华大学出版社 第三章 抽象数据类型 成功编译并运行)