CentOS編譯openjdk

wang03 發表於 2021-11-27
CentOS

編譯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 CLASSPATH
    
    
    source  ~/.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


到這裡,整個openjdk的編譯就結束了。