CentOS7下编译OpenJDK8源码

转载From: MR.HE ,博客链接为 https://blog.csdn.net/hxm_Code/article/details/77417709

本来想自己编译openJDK10的,结果编译的时候遇到了一些问题,可能是机子的GCC版本问题吧(我猜要升级到5+),后来参考这篇文章完成了openJDK8的编译。

最近在学习jvm,平时有关java虚拟机的知识都是从别人的认识,或者书本中获得,然而“纸上得来终觉浅,绝知此事要躬行”。想更深刻的认识jvm,还得自己亲自去研究一番。于是利用工作之余的时间自己编译一套jdk。

编译前注意问题

1、编译openjdk时,需要提供一个启动jdk,即boot JDK;
2、boot JDK需为当前编译的openjdk的上一个版本。例如这里编译的openjdk8,就要用jdk7作为启动jdk;
3、openjdk8跟之前的版本编译方式不一样,之前的版本是基于Ant 、ALT_*环境变量的编译方式,而openjdk8开始则是”configure && make”模式。(详细说明可以阅览官方文档)

我用的JDK的小版本比下面,并且好像JDK1.7要不维护了

环境、工具的准备
OS:CentOS 7 64bit;
OpenJDK:openjdk-8u40;
Boot JDK:jdk-1.7.0.14;

启动jdk的安装在这里就不赘述了,另外还要安装一些类库:

    yum groupinstall "Development Tools"  
    yum install libXtst-devel libXt-devel libXrender-devel  
    yum install cups-devel  
    yum install freetype-devel  
    yum install alsa-lib-devel  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5

可能以上类库还不够,但在以后的configure操作会有提示你缺哪些类库或者哪些工具,然后根据提示一 一安装好。

构建并编译

//打开要编译的openjdk目录
cd /usr/openjdk/openjdk-8u40-src-b25-10_feb_2015/openjdk
//生成配置信息并构建编译环境
bash ./configure --with-target-bits=64 --with-boot-jdk=/usr/java/MYBOOTJDK_1.7/ --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0
//开始编译
make all ZIP_DEBUGINFO_FILES=0  
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

以上的参数简单作一些说明:
–with-target-bits=64 :指定生成64位jdk;
–with-boot-jdk=/usr/java/MYBOOTJDK_1.7/:启动jdk的路径;
–with-debug-level=slowdebug:编译时debug的级别,有release, fastdebug, slowdebug 三种级别;
–enable-debug-symbols ZIP_DEBUGINFO_FILES=0:生成调试的符号信息,并且不压缩;

若在configure过程中提示安装工具,则在安装完工具后执行make clean进行清理方可再次configure,否则会config不成功。

configure成功后执行make 编译工作,这将是个漫长的等待过程,我编译的时候总共花费了一个半小时,当看到以下信息的时候,就意味着大功告成!

----- Build times -------
Start 2017-08-19 20:08:26
End   2017-08-19 22:03:37
00:04:32 corba
00:03:02 demos
00:20:23 docs
00:27:00 hotspot
00:05:30 images
00:01:45 jaxp
00:03:12 jaxws
00:43:27 jdk
00:04:01 langtools
00:02:15 nashorn
01:55:11 TOTAL

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

这里的话我看java版本的路径是这个:./build/linux-x86_64-normal-server-slowdebug/jdk/bin/java -version

然后cd 到编译后的openjdk目录下的bin子目录,熟悉吧?就是我们平时用的jdk下的bin目录,然后执行熟悉的java -version,输出如下:

扫描二维码关注公众号,回复: 545441 查看本文章
[root@localhost bin]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
  
  
  • 1
  • 2
  • 3
  • 4

这样以后就可以用自己编译的jdk了!
编译完jdk就结束了吗?然而对jvm的学习,编译jdk仅仅是一个开端,接下来就是调试、学习jdk,打开jvm之门,去探索java世界的奥秘!

最近在学习jvm,平时有关java虚拟机的知识都是从别人的认识,或者书本中获得,然而“纸上得来终觉浅,绝知此事要躬行”。想更深刻的认识jvm,还得自己亲自去研究一番。于是利用工作之余的时间自己编译一套jdk。

编译前注意问题

1、编译openjdk时,需要提供一个启动jdk,即boot JDK;
2、boot JDK需为当前编译的openjdk的上一个版本。例如这里编译的openjdk8,就要用jdk7作为启动jdk;
3、openjdk8跟之前的版本编译方式不一样,之前的版本是基于Ant 、ALT_*环境变量的编译方式,而openjdk8开始则是”configure && make”模式。(详细说明可以阅览官方文档)

猜你喜欢

转载自blog.csdn.net/u014744127/article/details/80246619