学习JVM中看到需要用HSDIS来进行代码检测调试,来来回回踩了一天的坑,问题一个接一个,而且百度也没有自己想要的答案
整理下今天的问题
1 编译环境系统选择问题: 因为我接触HSDIS是看周志明老师的虚拟机书,但是学到现在,基本上很多链接都失效了,在最后提了下说,如果没有编译好的文件,提供了iteye论坛的文件,有是有,在论坛的最底下,但是需要登录才能下载,问题是 加速地址: http://mirrors.163.com/cygwin/网站不提供注册功能.... 最后只能自己去编译,百度摸摸索索下,发现基本上都是在Cygwin下进行编译,但是没找到Linux环境下的编译,现在想想两者编译是一样,Cygwin是模拟Window下的Linux环境,有兴趣的可以直接去Linux下试试
2 Cygwin网络问题: 下载cygwin是在外网上,安装文件只有1.4M,但是期间 需要下载本地的一堆运行环境支持,网络比较差,基本连接不上,这时候就需要一个代理服务器去下载,最后找到了网易的链接.
在选择的时候将url链接add上去,有一定几率失败,要多试试几次,链接如下
3 binutils版本与hsdis版本问题 在编译一大半的时候,提示我编译hsdis.c出现类型不兼容问题 需要的是枚举类型,但是我的不是,看了下官方文档,我下的hsdis版本需要binutils 2.29.1 等,不支持2.29以下的版本.更换版本解决问题
注意下载的时候检查下对应的hsdis版本问题,大概在57行
binutils下载地址: Index of /gnu/binutils/
openJDK地址: OpenJDK Mercurial Repositories
这里没有贴具体的jdk地址,防止地址有变,工具位置就在对应jdk版本的hotspot下 /src/share/tools/hsdis
4 缺少相关环境问题 安装Cwgwin default环境会缺少其他编译需要的环境,需要自己去搜索下载,
1 make (应该会自带,这个可以不用下)
2 gcc-core
3 mingw64-x86_64-gcc-core
4 texinfo
5 diffutils
我在刚开始使用的时候没有去添加这几个环境, 编译显示没有配置,重新安装Cygwin,在搜索后点击后面的skip就会勾选上
之后重新选择解决问题.
编译步骤
1 安装Cygwin
客户端只有1.4M 到下载环境前,一路 下一步 环境需要在配置网络后单独下载,
网络配置地址: http://mirrors.163.com/cygwin/
2 下载HSDIS
openJDK地址: OpenJDK Mercurial Repositories
在这里找对应需要的hotspot工具版本
3 下载binutils版本
今天整理Cygwin编译