java虚拟机Jamvm嵌入式移植(适用Ubuntu x86平台)

搞了一个星期jamvm在mips上移植,目的在开发板上用虚拟机运行OSGI平台

所需要的软件包:linux平台下的jdk,zlib,libffi,classpath,jamvm。这些软件包都可以在对应的官网上能下载。
jdk是为了编译classpath时需要找到java的环境。
zlib和libffi是jamvm的依赖库
classpath和jamvm就不需要说明了吧
我使用的jdk版本是1.8.0_191,zlib是1.2.11,libffi是3.0.13,classpath是0.89,jamvm是1.5.4版本

我的编译目录是在/home/llb/java/packages下。
安装目录在/mnt下,安装目录和开发板实际调试目录相对应方便开发板上调试
如果不是交叉编译的可以直接找一个自己方便在x86上调试的目录

如果单纯是在x86平台下跑以下命令去掉CC=mips-linux-gcc和–host=mips-linux

  1. 配置jdk

    解压jdk的压缩包
    tar -zxf jdk-8u191-linux-i586.tar.gz

    设置jdk环境变量
    export JAVA_HOME=/home/llb/java/packages/jdk1.8.0_191
    export JRE_HOME=${JAVA_HOME}/jre
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    export PATH=${JAVA_HOME}/bin:$PATH

  2. 编译zlib
    tar -zxf zlib-1.2.11.tar.gz && cd zlib-1.2.11
    CC=mips-linux-gcc ./configure --prefix=/mnt/lib

  3. 编译libffi
    tar -zxf libffi-3.0.13.tar.gz && cd libffi-3.0.13
    CC=mips-linux-gcc ./configure --host=mips-linux --prefix=/mnt/lib
    cp /mnt/lib/lib/libffi-3.0.13/include/* /mnt/lib/include/.

  4. 编译classpath
    CC=mips-linux-gcc ./configure --host=mips-linux --disable-examples --without-x --disable-qt-peer --disable-gtk-peer --disable-gconf-peer --disable-plugin --disable-alsa --disable-dssi --prefix=/mnt/jdk --enable-Werror=no --enable-tools=no

  5. 编译jamvm
    CC=mips-linux-gcc ./configure --host=mips-linux --prefix=/mnt/jdk --with-classpath-install-dir=/mnt/jdk -enable-ffi CFLAGS=-I/mnt/lib/include LDFLAGS=-L/mnt/lib/lib

编译jamvm需要注意zlib和libffi的动态库和头文件路径,libffi的头文件编译好之后在lib下的libffi-3.0.13/include/目录中,我为了方便拷贝到了统一的include目录下。
–with-classpath-install-dir是你实际在开发板上调试时候classpath的目录,而不是classpath交叉编译的目录,这个需要对应起来(我在这个坑里掉了几天,我以为编译jamvm时候需要用到classpath。。。)。

最后是实际调试时候配置环境变量
export PATH=/mnt/jdk/bin:$PATH
export LD_LIBRARY_PATH=/mnt/jdk/lib/classpath:/mnt/lib/lib:/mnt/jdk/lib

遇到的一些其他问题:
1.can’t resolve symbol ***:未包含一些对应的库文件,找到对应的库放到lib目录下基本都能解决
2.段错误:没有加zlib和libffi,或者这两个编译有问题

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值