ubuntu 14.04下編譯JDK7

編譯前準備

1. 下載openjdk

官方建議是使用Mercurial來下載代碼,Mercurial是一款免費的、跨平臺的、分發源碼的管理工具。但由于openjdk源碼是放在國外的服務器上的,下載及其緩慢,所以我建議直接下載源碼壓縮包。我下載的源碼壓縮包是openjdk7。

openjdk-7u40

2. 解壓源碼壓縮包,解壓后的目錄結構

3. 安裝jdk的依賴庫

(1)、如果系統中已經安裝了jdk和ant,運行:sudo apt-get install build-essential gawk m4 libasound-devlibcups2-dev libxrender-dev xorg-dev xutils-dev x11proto-print-dev binutilslibmotif3 libmotif-dev .

(2)、如果系統中還未安裝jdk和ant,運行:sudo apt-get install build-essential gawk m4 openjdk-7-jdklibasound-dev libcups2-dev libxrender-dev xorg-dev xutils-devx11proto-print-dev binutils libmotif3 libmotif-dev ant.

說明:安裝的jdk是作為編譯openjdk時的java環境的,因為openjdk中大部分代碼還是java的,所以需要一個啟動的jdk,下載的啟動(bootstrap)jdk一定要在jdk6 update 14之后的版本。需要下載的ant版本必須大于或等于1.7.1.

4. 設置系統的環境變量,以滿足openjdk的編譯

sudo gedit /etc/bash.bashrc

在/etc/bash.bashrc中增加如下內容:


#語言選項這個必須設置,否則編譯好后會出現一個hashtable的npe錯

export LANG=C

#設置bootstrap JDK的安裝路徑,必須設置

exportALT_BOOTDIR=/home/java/jdk/jdk1.7.0_45/

#運行自動下載依賴

export ALLOW_DOWNLOADS=true

#

export SKIP_COMPARE_IMAGES=true

#使用預編譯頭,不加這個編譯會慢一些

export USE_PRECOMPILED_HEADER=true

#設置要編譯的內容

exportBUILD_LANGTOOLS=true

#export BUILD_JAXP=false

#export BUILD_JAXWS=false

#export BUILD_CORBA=false

export BUILD_HOTSPOT=true

export BUILD_JDK=true

#要編譯的版本

#export SKIP_DEBUG_BUILD=false

#export SKIP_FASTDEBUG_BUILD=true

#export DEBUG_NAME=debug

#把他設置為false可以避開javaws和瀏覽器java插件之類的部分的build

BUILD_DEPLOY=false

#把他設置為false就不會build出安裝包,因為安裝包里有一些奇怪的依賴,

#但即便不build出它也可以得到完整的jdk映像,所以還是別build它好

BUILD_INSTALL=false

#編譯結果所存放的路徑

exportALT_OUTPUTDIR=/home/fengyu_daniel/fengyu/java/openjdk/

#必須設置

unset JAVA_HOME

unset CLASSPATH


正式編譯階段

1. 進入解壓后的openjdk源碼根目錄:cd /home/openJdk/openJdk/

2. 重定向日志信息,保留編譯期間的日志:make 2>&1 | tee $ALT_OUTPUTDIR/build.log

3. 檢查之前設置的環境變量是否正確:make sanity;如果環境變量設置正確,結果如圖:


編譯前環境設置檢查結果

4. 接下來進行編譯:make

說明:如果編譯的時候報錯了,尤其時關于langtools/make/build.xml的錯誤,可能是因為bootstrap jdk的版本的原因,可以換一個版本低于openjdk的版本。openJdk7的bug修復。編譯期間出現一個時間的錯誤,這是openjdk7u40的一個bug,替換源碼目錄下的對應的幾個文件內容就可以編譯了,見地址:http://hg.openjdk.java.net/jdk7u/jdk7u/jdk/rev/74a70385c21d#l11.1.編輯比較耗時,在我本人的筆記本上大約編譯鈴45分鐘。

5. 編譯成功的結果如圖:

控制臺編譯結果
編譯結果目錄結構

檢測編譯結果

1. 結果路徑下的j2sdk-image目錄下的所有文件就是我們常見的jdk。

2. 進入目標路徑下的j2sdk-image目錄:java -version

如果編譯的jdk沒有錯誤,那結果如圖:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,687評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,682評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,011評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,183評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,714評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,435評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,665評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,838評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,379評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,627評論 2 380

推薦閱讀更多精彩內容