最近再看 周志鹏老师的 《深入理解javajvm虚拟机》,就想自己编译下试试。幸好本人的开发环境是linux 的,这就省下了一步。然后按照教程编译JDK7,无奈坑点太多,只能转战JDK8,最后编译成功,特在此记录。
环境:
系统:ubuntu18.04
jkd版本:jdk1.7
编译版本:openJDK8
依赖:
ps:因为我的开发环境就是Linux,所有依赖已经安装完毕。所以贴下别人的
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev
sudo apt-get install libcups2-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install libasound2-dev
准备:
安装 Mercurial:
sudo add-apt-repository -y ppa:tortoisehg-ppa/releases
sudo apt-get update
sudo apt-get install mercurial tortoisehg
获取JDK:
1.Mercurial:获取
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u jdk8u
cd jdk8u
bash ./get_source.sh
2.源码方式:(没试过)
下载地址:http://hg.openjdk.java.net/jdk8u/jdk8u60/jdk/file/935758609767
进去后点击左侧的 zip 就会开始下载
开始:
1.终端输入:
echo $LANG
2.如果显示的不是 “C” ,输入
export LANG=C
3. cd 到 源码根目录下 检车编译环境 运行
bash configure
4. 编译
make
5. 如果出现 “openjdk cc1plus: all warnings being treated as errors”,cd 到 源码根目录/hotspot/make/linux/makefiles/,编辑 gcc.make ,工具随意,我用的是 vim。
vim gcc.make
然后输入:
:set number
找到204行,摁 “i”,进行编辑
把“WARNINGS_ARE_ERRORS = -Werror” 改为 “WARNINGS_ARE_ERRORS = -Wno-error”
然后 摁 “ESC” ,输入:”!wq“ 进行保存。然后回到源码根目录进行make。
约 7~ 10分钟。编译完成出现
----- Build times -------
Start 2018-12-26 14:25:45
End 2018-12-26 14:32:07
00:00:19 corba
00:03:11 hotspot
00:00:12 jaxp
00:00:20 jaxws
00:02:19 jdk
00:00:00 langtools
00:06:22 TOTAL
-------------------------
Finished building OpenJDK for target 'default'
cd ~/Public/openJDK/jdk8u-dev/build/linux-x86_64-normal-
server-release/jdk/bin
./java -version
结果:
openjdk version "1.8.0-internal"
OpenJDK Runtime Environment (build 1.8.0-internal-xiyeming_2018_12_26_14_20-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00, mixed mode)
OK!大功告成!!!