ubuntu15.04環境下編譯jdk8源碼

新裝的ubuntu15.04環境下編譯openjdk8源碼:
1.下載源碼:openjdk-8u40-src-b25-10_feb_2015.src.zip
    http://download.csdn.net/detail/socrj/8454221(CSDN上網友上傳的openjdk-8u40-src-b25-10_feb_2015.7z)
    官網下載地址:http://download.java.net/openjdk/jdk8/
    (linux上臨時裝上了解壓7z的包)
    採用源碼src.zip類型直接下載方式,沒有采用官網http://openjdk.java.net/推薦的OpenJDK Mercurial repository方式進行下載
2.解壓下載下來的openjdk-8u40-src-b25-10_feb_2015包,進入openjdk目錄,在openjdk目錄下找到README-builds.html文件,對編譯步驟進行詳細閱讀:按照上面的步驟進行編譯源碼。

3.打開終端,cd到openjdk目錄下:
    執行以下命令安裝依賴(如果沒有安裝aptitude,可以使用sudo apt-get install aptitude先安裝aptitude)
sudo aptitude build-dep openjdk-7
sudo aptitude install openjdk-7-jdk
按照網上多個教程中編譯openjdk7的方法沒有編譯成功,由於又是最新版本的ubuntu15.04,所以嘗試編譯了openjdk8,在嘗試編譯openjdk7的過程中,linux環境下安裝了好多個版本的jdk,包括openjdk7,openjdk6,官方jdk7,官方jdk8.均位於/usr/lib/jvm/目錄之下。

問題:在直接使用命令 sudo apt-get install openjdk-7-jdk安裝了openjdk7之後,測試java運行環境,出現這種狀況:

adongguo@adongguo-Dell-System-Inspiron-7420:~$ java -version
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
紅色部分在之後會影響到Bootstrap JDK的查找,此處使用unset JAVA_TOOL_OPTIONS方法將環境變量中JAVA_TOOL_OPTIONS刪除掉,然後再測試java環境,沒有了影響。(具體原因不是很清楚,只是嘗試過程中發現的)

4.設置環境變量:
export LANG=C
export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"
(注意:紅色部分爲jdk報名,可能與默認安裝好的openjdk7的不同,注意修改)
另:在之前嘗試編譯openjdk7的過程中,執行過別人的安裝依賴的一個命令(參看java虛擬機精講-高翔龍版),如下:
sudo apt-get install build-essential gawk m4 openjdk-6-jdk libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev X11proto-print-dev binutils libmotif3 libmotif-dev ant
並得到了都是最新版本的各種依賴庫:
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ant is already the newest version.
binutils is already the newest version.
build-essential is already the newest version.
gawk is already the newest version.
libasound2-dev is already the newest version.
libxrender-dev is already the newest version.
m4 is already the newest version.
x11proto-print-dev is already the newest version.
xorg-dev is already the newest version.
xutils-dev is already the newest version.
libmotif-dev is already the newest version.
libmotif3 is already the newest version.
libcups2-dev is already the newest version.
openjdk-6-jdk is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 134 not upgraded.

5.在openjdk根目錄下執行命令 bash ./configure 如果出現錯誤根據執行過程中的日誌進行排查,直到配置完成沒有錯誤爲止。
(就是在這個過程中,因爲JAVA_TOOL_OPTIONS環境變量的存在出現了找不到Bootstrap JDK的問題,刪除該環境變量就可以了,可以用bash ./configure --with-boot-jdk=path(path指的是自己指定的編譯jdk路徑,要求jdk版本大於7))
具體編譯出來的類型,需要按照
6.執行命令 make all
make命令有好多的配置參數,但是這裏直接按照README-builds.html文件中描述的方式採用了make all命令,至於自己想要的配置可以按照文件中描述的方式配置configure命令的參數。

7.編譯過程中遇到問題只能根據上面的輸出日誌進行排查了,我在編譯過程中萬幸的沒有出現問題,最後輸出如下內容表示編譯成功:

----- Build times -------
Start 2015-10-17 09:57:38
End   2015-10-17 10:14:32
00:00:39 corba
00:00:23 demos
00:02:20 docs
00:06:57 hotspot
00:00:33 images
00:00:25 jaxp
00:00:35 jaxws
00:04:05 jdk
00:00:39 langtools
00:00:18 nashorn
00:16:54 TOTAL
-------------------------

編譯成功之後進入openjdk目錄下的/build/linux-x86_64-normal-server-fastdebug/images/j2sdk-image目錄(紅色部分根據自己配置不同可能不同,我配置了一個fastdebug,默認爲release),這個目錄下就是自己編譯好的openjdk8。在該目錄下執行 ./java -version可以看到自己編譯的jdk版本信息。


這只是一個嘗試編譯openjdk的過程,只是湊巧遇到的問題比較少,編譯的過程比較順利,網上各種編譯openjdk7的方式,只要是顯示出最終結果的都時編譯出來的,只不過編譯的過程對環境的要求非常苛刻,誰都不知道自己編譯的時候會出現什麼幺蛾子,如果決心編譯成功的話,就不斷的嘗試吧,即使是重裝系統也是有可能的。


















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章