boot jdk 1.6編譯openjdk1.7
環境:CentOs 7 64 位 計劃編譯的JDK版本:openjdk-7 Boot JDK,即現有的JDK版本:jdk-6u45(這裡必須在jdk6u14以上) 注意:低版本的jdk編譯高版本的openjdk,且兩個版本的差距不要太大; boot jdk1.7及以前的版本只有.bin檔案,拿到linux直接安裝就好了
一、獲取JDK原始碼,有三種方式: 1.使用Mercurial版本管理工具: Repository地址:http:hg.openjdk.java.net/jdk7u/jdk7u 命令:
hg clone http://hgopenjdk.java.net/jdk7u/jdk7u-dev cd jdk7u-dev chmod 755 get_resource.sh ./get_source.sh
PS:我是直接拿的這個地址去下載的,先下載jdk7u-dev,然後在url拼出該目錄下的其他包,這樣可以保證原始碼的完整性
2.直接到官網下載原始碼包
image.png
二、準備工作
1.因為編譯基於c的環境,下載GCC, 版本4.3以上yum install -y gcc gcc-c++
;
2.需要Apache Ant執行Java編譯程式碼中的Ant指令碼yum install -y ant ant-nodeps
;
三、開始編譯
0.進入到openjdk目錄
1.環境變數:
1)openJDK需要的環境變數有很多,但大部分有預設值,但以下兩個必須手動設定:LANG語言選項和ALT_BOOTDIR是現有jdk的路徑export LANG=C
export ALT_BOOTDIR=/usr/software/jdk1.6.45/
2)允許自動下載依賴export ALLOW_DOWNLOADS=true
3)關閉已有的jdk環境變數,否則Makefile會報錯:unset JAVA_HOME
unset CLASSPTAH
4)指定編譯結果存放目錄export ALT_OUTPUTDIR=/usr/software/jdk7u
5)make 2>&1 | tee $ALT_OUTPUTDIR/build.log
2.輸入make sanity
檢查前面的設定是否正確,需要一點時間,耐心等待。。(中間可能會出現一點問題,但只要最後結果是“sannity check passed”就說明檢查通過了)
3.接下來就是真正的編譯了,整個過程大概是60分鐘,繼續耐心等待。。
過程中可能會需要安裝一些原來系統沒有的工具包,根據報錯安裝就是。安裝完之後繼續使用make命令編譯,如果沒有大問題就是增量編譯,不用擔心時間的問題。但有些情況還是需要刪掉生成目錄重新編譯。我的編譯最後有一個小問題,但是執行java -version
提示是成功的,如下:
4.趕快動手試一試吧~ 另:如果有留言需要上傳原始碼的,我後期再上傳