CentOS编译openjdk

编译openjdk
1. 下载openjdk源码
openjdk的官网是OpenJDK (java.net)
在网站左侧就能看到它的源码位置的链接
CentOS编译openjdk
文章图片

从图上可以看到,它的源码在两个位置有托管,Mercurial、GitHub这两个网站都有。我们点击GitHub,进去到它GitHub的位置。
CentOS编译openjdk
文章图片

上图第一个就是openjdk的仓库地址了 。
CentOS编译openjdk
文章图片

选择HTTPS,复制地址。
下一步,登录码云(没账号的可以先创建一个),在边上有个+的图标,点开就可以看到二级菜单有个从GitHub/GitLab导入仓库。
CentOS编译openjdk
文章图片

上面Git仓库URL,填入从GitHub复制的地址,https://github.com/openjdk/jdk.git ,仓库名字可以自己写一个。完了之后点击导入,就可以将openjdk的源码导入到码云上来,导入后和GitHub就都是一样的。

选择导入GitHub仓库的话,可以关联自己的GitHub账号,把自己GitHub的仓库也导入过来。
最后,我们就可以从码云上下载openjdk的源码了,再也不是龟速了。我本地下载6MB/s,不到1分钟就下载完成了。
CentOS编译openjdk
文章图片

我本次选的是jdk-11+25这个分支。
CentOS编译openjdk
文章图片

我本地下载下来的是openjdk-jdk-11+25.zip
2. 环境准备
  1. 需要一个linux(windows也可以,不过好像比较麻烦,我没试过。我本次是用Linux)环境。我是虚拟机安装的CentOS7。具体的版本号如下图
CentOS编译openjdk
文章图片

  1. 根据阿里云设置下软件镜像源。centos镜像-centos下载地址-centos安装教程-阿里巴巴开源镜像站 (aliyun.com)
  2. 在环境中安装jdk并设置环境变量(不用卸载系统自带的JDK,直接可以使用压缩版的jdk解压后,设置相关的环境变量就可以)。
    vim ~/.bashrc#在~/.bashrc中添加下面java环境变量 JAVA_HOME=/root/openjdk/jdk-11.0.10#java目录 CLASSPATH=$JAVA_HOME/lib PATH=$JAVA_HOME/bin:$PATH export PATH JAVA_HOME CLASSPATHsource~/.bashrc#使环境变量生效

    jdk的版本不能小于要编译的jdk版本-1,这个在编译指导中有写,具体自己看吧。
CentOS编译openjdk
文章图片

我本次使用的是jdk11,具体的版本号是如下图。
CentOS编译openjdk
文章图片

4.将下载的openjdk的源码的压缩包(我本次的压缩包是openjdk-jdk-11+25.zip)上传到CentOS7服务器上,后续所有的工作就都在CentOS7上执行了。
到这里,所有的准备工作就完成了,下一步就开始编译openjdk了。
3. 编译openjdk
  1. 首先在shell中输入java -version,确实当前默认的java就是我们自己安装的。
  2. 解压上传的openjdk源码压缩包。
    yum install zip unzip#安装解压缩软件 unzip openjdk-jdk-11+25.zip#解压openjdk源码包

  3. 源码包中有个README,打开可以看到编译的帮助文档是在doc目录下的building文件。上面2.3中的需要的jdk的版本也是在这个building的帮助文档里。
CentOS编译openjdk
文章图片

  1. 编译openjdk使用make来完成的,所以需要先安装make(很多服务器都是自带make的,如果自带了,那就不用再安装了.)。
    yum install make#安装make,我本次用的CentOS就自带了

  2. 下一步就是根据building中的指导来编译了。
    bash ./configure --help 这个命令可以来查看各种编译选项。
    bash ./configure --with-debug-level=slowdebug--with-target-bits=64 make

    我本次就是使用上面两行命令来编译的。
    编译过程中需要的软件也不必提前安装,安装过程中如果发现缺软件,会有提示。如下图,根据提示安装相关软件就可以了。
    下面就是我本地实际安装的软件了。都是根据错误提示安装的。
    sudo yum install libXtst-devel libXt-devel libXrender-devel libXi-devel sudo yum install cups-devel sudo yum install fontconfig-devel sudo yum install alsa-lib-devel

    CentOS编译openjdk
    文章图片

? configuration成功的话,会有如下图
? CentOS编译openjdk
文章图片

? make成功的话会有如下图
CentOS编译openjdk
文章图片

  1. 如果编译成功,会在build/linux-x86_64-normal-server-slowdebug/jdk这个目录下生成我们编译的openjdk。
    执行如下命令,验证我们的编译结果。
    cd build/linux-x86_64-normal-server-slowdebug/jdk cd bin ./java -version

    CentOS编译openjdk
    文章图片

【CentOS编译openjdk】到这里,整个openjdk的编译就结束了。

    推荐阅读