java虚拟机JVM 移植

本文详细介绍了如何在6410开发板上移植Java虚拟机(JVM),包括裁剪与编译Java核心类库、配置环境变量等步骤,并提供了移植流程的关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                     java虚拟机JVM 移植

                                                                                                 -----by flyyang 

 注:版权所有,如若转载请注明出处。

 原文出自:http://blog.youkuaiyun.com/flyyang123456789/article/details/17392103

前言:所需安装包 arm-linux交叉编译工具包  java 类编译器Jikes   jikes-1.22.tar.bz2   java  核心类库 GNU classpath classpath-0.90.tar.gz 以及

jamvm-1.4.2.tar.gz 和 依赖包zlib-1.2.7.tar.gz 

 

一、jVM在 宿主机上的裁剪与编译

 

1、交叉编译环境通常叫做交叉编译工具链 只要包括 预处理器CPP   编译器GCC  C 库Glibc/NewLib 汇编器AS 链接器LD 其中CPP 处理头文件和宏 并生成C 程序文本文件 GCCG将 经过 预处 理 的 C文 件编 译 为 汇编 代 码   AS 将汇 编 代码 生 成二 进 制 可 重 定位 的 目标对 象文 件 , 由链 接 器LD 链接生成可执行文件

 

2、arm-linux 交叉编译器的环境配置    略          

 

3、安装 java 类编译器Jikes  

 

解压: tar jvxf jikes-1.22.tar.bz2  cd  jikes-1.22

 

直接 ./configure  即可  make   make install

 

测试 Jikes 安装是否成功  当出现这种情况即 安装成功

 

[root@localhost ~]# jikes 

use: jikes [options] [@files] file.java...

For more help, try -help or -version.

 

4、编译和安装java  核心类库 GNU classpath  

 

解压 :tar zvxf classpath-0.90.tar.gz  cd classpath-0.90

配置裁剪:要指定目标安装平台 arm-linux  并指名编译器为刚安装的 jikes  和指定classpath安装 目录 /opt/classpath 

 

指定编译工具

[root@localhost classpath-0.90]# CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-ld CPP=arm-linux-cpp RANLIB=arm-linux-ranlib STRIP=arm-linux-strip

 

配置:./configure --host=arm-linux --disable-gtk-peer --disable-gconf-peer --disable-plugin --with-jikes --with-jni --prefix=/opt/classpath

 

GTK图形库 裁剪掉不编译 标准图形桌面环境gconf库 裁剪掉不编译 浏览器插件库 裁剪掉不编译

编译JNI 方便以后添加更多的第三方包 java JNI本地接口  

 

make

可能出错 修改 /classpath-0.90/native/jni/ 下Makefile 删除里面所有的  all-local(第 500行,576行,590(包括591)行)  all-recursive(第 55行,第 281行,第 503行,第 506行) 

然后保存后 再次 make 即可通过

make install

 

5、编译安装jamVM 

 

解压 :tar zvxf jamvm-1.4.2.tar.gz  cd jamvm-1.4.2

 

配置编译工具

 

[root@localhost classpath-0.90]# CC=arm-linux-gcc AR=arm-linux-ar LD=arm-linux-ld CPP=arm-linux-cpp RANLIB=arm-linux-ranlib STRIP=arm-linux-strip

 

 

配置:[root@localhost jamvm-1.4.2]# ./configure --host=arm-linux -prefix=/mnt/jamvm --with-class-path-install-dir=/mnt/jamvm/lib/classpath

 

make (没有出现错误)然后 make  install 安装

 

再然后 就可以 到相关 目录下去 看到jamvn 的可执行文件我的是在 这就是 需要在开发板上运行的 虚拟机的可执行文件

 

然后 增加链接库文件 

因jamVM 在 启动是需要读入两个 zip 文件 这就需要zlib 库文件的 支持 

安装 zlib 包

 

解压: tar zvxf zlib-1.2.7.tar.gz  cd zlib-1.2.7

 

指定 编译器 

#CC=arm-linux-gcc

配置:./configure --prefix=/mnt/zlib

make  make install

即可 然后到 /mnt/zlib/lib/ 下将  libz.so  libz.so.1 这两个链接库文件 拷贝到 classpath 目录下即可 可以使用 cp 

 

 

然后 将 /opt/class  目录下的 所有文件就是要移植的 虚拟机 

 

二、 jVM 移植到 开发板 

 

配置JVM 在6410开发板上的环境变量

1:指 定 类 路 径

export BOOTCLASSPATH=/mnt/flyde/class/classp~1/share/classp~1/glibj.zip:/mnt/flyde/class/jamvm/share/jamvm/classes.zip

2:指 定 LD_LIBARY_PATH 环 境 变 量 到 /classjava/classpath

下, 那 里 有 许 多 *.so 文 件 , 这 些 都 是 java 核 心 类 库 API 的 C 程 序

链接

export LD_LIBRARY_PATH=/mnt/flyde/class/classp~1/lib/classp~1

3:在目标板上的 /lib 下建立链接

ln -s /mnt/flyde/class/classp~1/libz.so.1 /lib/libzso~1.1

ln -s /mnt/flyde/class/classp~1/libz.so /lib/libz.so

4:添加环境变量 PATH

export PATH=$PATH:/mnt/flyde/class/jamvm/bin

 

或者是将环境变量配置放在 config 里  加上 x 权限 在开发板上执行即可

 

在开发板上要运行 java字节码文件

 

注 : 在 开发版 上 使用jamvm 来执行的java 字节码 (.class 文件)

必须是在 宿主机上 使用 jikes  来 编译生成的 编译时 指名要加载的包名

 

在宿主机上使用 如下命令 来编译.java 文件 

Jikes--bootclasspath /opt/JVM/class/jamvm/share/jamvm/classes.zip:/opt/JVM/class/classpath/share/classpath/glibj.zip hello.java

 

即可生成hello.class 文件

 

同时 拷贝到 开发板上 即可 

 

 

注:

Arm-linux-ranlib来对静态库的符号索引表进行更新

用Arm-linux-strip处理过后,将去掉其中的调试信息,执行文 件大小也将小很多

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值