第一步,放弃前文那个openjdk,因为版本太老,对比较新的Linux极不友好,我编译那个openjdk报了N多错误,什么不支持的Linux(其实是判断条件没有4.X的Linux),什么找不到指令(新的gcc编译器已经删除该指令),还有各种稀奇古怪的问题,我就不一一列举了,前前后后忙活了2天,期间甚至想要放弃,好在最后还是坚持下来了
说了这么多问题,其实解决方法也很简单,到官方仓库下载对应的版本,以保证openjdk是最新的,这里我们需要安装mercurial用来拉取官网的库
sudo apt-get install mercurial//安装mercurial
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u//拉取jdk8u的库
cd jdk8u
sh get_source.sh//更新库,注意,这一步是必须的,不然你就只有一个壳子在那里
网速非常慢,还经常失败,网速大概平均20kb每秒,这是我下载好的,但是如果多年以后我现在下载的这个版本过期了,请自行去http://hg.openjdk.java.net/查找最新版本,安装步骤应该不会有太大出入
链接: https://pan.baidu.com/s/1rNtwFZ-nRIY4nJtCTcHaYw 提取码: rpzd 复制这段内容后打开百度网盘手机App,操作更方便哦
拉取到最新库之后,步骤就简单许多了,我在上一篇文章已经配置好低版本的jdk了,生成预编译的步骤也是一样的,然后我们要在
你的openjdk路径/hotspot/make/linux/makefiles/gcc.make这个文件中找到WARNINGS_ARE_ERRORS = -Werror,删除或者注释都行,这玩意的意思是把所有警告当成报错,一句话,过于沙雕,开始编译
make all DEBUG_BINARIES=true
等待5分钟(现在这么快是因为这是我第二次编译),物理u是i5 8400,给了虚拟机全核,占用100%,五分钟搞定,读者需要编译多久我不打包票,网上一个小时的也不少
打开对应的bin目录,成功