RednaxelaFX 写道
如果您想移植OpenJDK,其实最恶心的不是移植JVM自身,而是移植那庞大的class library。当然移植JVM自身也得花很多功夫,但恐怕跟移植class library要花的功夫比还不是一个量级的。
是的,移植的时候一直遇到诡异的问题。比如我试图交叉编译单独的jdk部分,然后报出下面的错误
make[2]: Entering directory `/home/yuyinyang/openjdk-7u6-fcs-src-b24-28_aug_2012/openjdk/jdk/make/java/java'
(cd ../nio; make sources)
INFO: ENABLE_FULL_DEBUG_SYMBOLS=1
INFO: cross compiling for ARCH amd64, skipping .debuginfo generation.
INFO: no objcopy cmd found so cannot create .debuginfo files.
make[3]: Entering directory `/home/yuyinyang/openjdk-7u6-fcs-src-b24-28_aug_2012/openjdk/jdk/make/java/nio'
make[3]: *** No rule to make target `/classes//sun/nio/ch/SocketOptionRegistry-linux-amd64.java', needed by `/home/yuyinyang/openjdk-7u6-fcs-src-b24-28_aug_2012/openjdk/build/jdk/g
ensrc/sun/nio/ch/SocketOptionRegistry.java'. Stop.
make[3]: Leaving directory `/home/yuyinyang/openjdk-7u6-fcs-src-b24-28_aug_2012/openjdk/jdk/make/java/nio'
make[2]: *** [niosrc] Error 2
make[2]: Leaving directory `/home/yuyinyang/openjdk-7u6-fcs-src-b24-28_aug_2012/openjdk/jdk/make/java/java'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/yuyinyang/openjdk-7u6-fcs-src-b24-28_aug_2012/openjdk/jdk/make/java'
make: *** [all] Error 1
我的目标平台是一个基于x86指令集扩展为64位寻址的体系结构,我把CROSS_COMPILE_ARCH依然设为amd64,原因是如果我把它设成openjdk不能识别的名称在用target compile toolchain编译的时候会默认加上-m32 flag。
我现在想在那个没有java环境的平台上做一些java的事情,就比如说像jikes rvm那样,不关心javac的过程,而只是focus在jvm执行.class文件,这点有可能办到吗?或者您有什么其他的建议吗?不局限于openjdk也行。