1. 程式人生 > >boot jdk 1.6編譯openjdk1.7

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

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_HOMEunset 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.趕快動手試一試吧~ 另:如果有留言需要上傳原始碼的,我後期再上傳