JAMVM + openjdk8 编译和调试

17 篇文章 0 订阅
13 篇文章 1 订阅

编译

JAMVM 默认使用 GNUClasspath,但是这样的话仅支持 java1.5。
这里主要介绍 JAMVM 搭配 openjdk classpath 使用,可以支持到 openjdk9,这里采用 openjdk8:

源码下载

这里千万千万不要直接下载官网的源码,就是下面这个链接,因为 release 好久没更新,有些 fix 没进去。
https://sourceforge.net/projects/jamvm/files/

正确的下载姿势是到 Project 页面下载最新的 Snapshot,或者直接用 git clone:
https://sourceforge.net/p/jamvm/code/ci/master/tree/

然而这还不够,还是有些问题没修
新版 openjdk 在 60 以后在 jvm.c 里面加了几个函数,所以你会遇到以下错误:

libjava.so: symbol JVM_GetResourceLookupCacheURLs, version SUNWprivate_1.1 not defined in file libjvm.so with link time reference

当然有人已经帮忙修复了,手动 merge 以下这个 commit:
https://github.com/xranby/jamvm/commit/25b39703b2c3468f666f6175ff94e46526d402a7

OK 下面正式开始编译

在此之前还是先安装 openjdk8 或者 oracle jdk8,并且配置环境变量,最好是 60 61 80 版本,其他版本我没试过。

sudo ./configure --with-java-runtime-library=openjdk8 CFLAGS=-g
sudo make install  
sudo cp /usr/local/jamvm/lib/libjvm.so   /usr/lib/jvm/jdk1.8.0_60/lib/amd64/server/

注意如果需要调试的话,要加上 CFLAGS=-g 禁止编译器优化。
简单来说就是用 jamvm 的 libjvm.so 替换 openjdk 的,openjdk 有一套通用的标准接口去调用 jvm 核心。

调试在这里插入图片描述

gdb java -tui
(gdb) b xxx.c //打好断点
(gdb) run Test //run 你编译好的 class
  • 2
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论

打赏作者

OSTCB

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值