编译JDK教学

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情

为了更深入的学习多线程,编译一个JDK是必要的,是自己编译的JDK噢,不是从官网下的,本作者也是理论和实践相结合,为了给大家带来更好的文章,亲身去编译了一下JDK,本作者用时2天零2个小时,当然,你们看我的文章之后时间可能会更短,这也是我写作的目的,分享与成长。

准备工作

1、openjdk的源码包

工欲善其事必先利其器,干任何事情都要准备,你需要准备openjdk的源码包,源码包的获取方式有两种:一种方式是直接通过官网获取,另一种就是通过镜像来获取吗,这个镜像是真大,拉取之后呢,就切换到对应的tag版本就可以了。

安装mercurial

yum -y install mercurial ##拉取openjdk8的源码,这种方式拉取比较慢(可以选择下面第二种方案:从github上拉取) hg clone hg.openjdk.java.net/jdk8/jdk8 openjdk8

拉取镜像

git clone github.com/openjdk/jdk ##拉取后切换分支 cd jdk ##tag 标记 jdk8-b120,github上8版本最新的tag git checkout jdk8-b120,github上8版本最新的tag

bootjdk

你还需要一个引导jdk,顾名思义就是引导编译的jdk,你就去官网下载一个普通的jdk就可以啦,切记引导jdk要比要编译的openjdk低一个版本。

工具集

  • yum install -y zip
  • yum groupinstall -y "Development Tools"
  • yum install -y libbXtst-devel libXt-devel libXrender-devel
  • yum install -y cups-devel
  • yum install -y alsa-lib-devel
  • yum install -y freetype-devel

参数设置

准备工作做好以后,需要进行参数设置,你需要进入下载的源码包目录里找到configure文件,这是我们操作的灵魂,然后给其增加权限,设置参数,执行以下命令:

  • export LANG=C
  • export USE_PRECOMPILED_HEADER=true
  • unset JAVA_HOME
  • unset CLASSPATH
  • unset JAVA_TOOL_OPTIONS
  • bash ./configure --with-target-bits=64 --with-boot-jdk=/usr/local/jdk7/jdk1.7.0_76 --(这里换成你自己下载的引导jdk的目录)
  • bash ./configure --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0

看到下面的这种就可以往下进行编译了,如果有错误就解决错误。 image.png

比如这种就是一个错误:

L97U~62DCZG2M7Q[@{QA]73.png

这个是我用yum安装的jdk,可能网速不好,所以导致某些包没有下载完全。

编译

以上都没有问题就开始编译: make all CONF=linux-x86_64-normal-server-slowdebug ZIP_DEBUGINFO_FILES=0

然后你就看到cpu疯转,有一些报错百度都可以找得到,如下的这样:

72BT88378RB`JUVK41GMMOB.png

着实是踩了不少坑,所幸编译成功了。

当你看到这样的界面,证明编译成功:

image.png

好啦,到这一步,你加个环境变量,这个jdk就能用了。

猜你喜欢

转载自juejin.im/post/7128904284883648549