1. 程式人生 > >linux編譯openjdk8

linux編譯openjdk8

最近在看《深入理解java虛擬機器》,第一章主要講java歷史,有點意思的是編譯openjdk,想自己試著搞搞,但是書上編譯的是7,而且要配置一堆的配置檔案,就上網查查,openjdk8貌似不用配置這麼多,就試著編譯8。紀錄一下操作過程。

**

編譯

**

系統:centOs 7.5 64位(剛開始用的騰訊雲1核1g,編譯的時候說記憶體不夠,好在騰訊雲5天免費退,改成1核2g) 1、下載openjdk8:https://pan.baidu.com/s/1pLSMpAj 2、上傳到伺服器/usr/openjdk 3、下載的壓縮包是7z的,所以要先安裝7z工具

yum install p7zip
7za x openjdk-8u40-src-b25-10_feb_2015.7z

4、安裝jdk,編譯需要一個引導jdk,網上都說要比openjdk的版本低一個,我也不知道為什麼,就依葫蘆畫瓢,下了1.7u80.

cd /usr/java
tar -zxvf jdk-7u80-linux-x64.tar.gz
vi  /etc/profile
//在開啟的檔案末尾新增如下內容:
export JAVA_HOME=/usr/java/jdk1.7.0_80
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH
source /etc/profile    #使配置檔案立即生效

5、安裝編譯用的工具,我安裝如下工具之後就可以正常編譯了,沒有網上說的configure出現未安裝的依賴。大家有的話可以再安裝缺少的。

yum groupinstall "Development Tools"
yum install libXtst-devel libXt-devel libXrender-devel
yum install cups-devel
yum install freetype-devel
yum install alsa-lib-devel
yum install ccache

6、開始編譯

cd /usr/openjdk/openjdk-8u40-src-b25-10_feb_2015/openjdk
bash ./configure --with-target-bits=64 --with-boot-jdk=/usr/java/jdk1.7.0_80/ --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0
make all ZIP_DEBUGINFO_FILES=0

其中configure成功會出現如下截圖 在這裡插入圖片描述

此處說明下上面configure用到的引數作用: –with-target-bits=64 :指定生成64位jdk; –with-boot-jdk=/usr/java/MYBOOTJDK_1.7/:啟動jdk的路徑; –with-debug-level=slowdebug:編譯時debug的級別,有release, fastdebug, slowdebug 三種級別; –enable-debug-symbols ZIP_DEBUGINFO_FILES=0:生成除錯的符號資訊,並且不壓縮;

make成功之後會出現如下截圖:但是我沒有出現網上說的編譯1個多小時的情況 在這裡插入圖片描述

cd /usr/openjdk/openjdk-8u40-src-b25-10_feb_2015/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin 
./java -version
//出現如下截圖

在這裡插入圖片描述

執行除錯

因為我的linux是雲伺服器,不太方便除錯,想著能不能把編譯好的程式碼放到我的本地windows下執行除錯,但是我估計是不行的。猜測理由:1、jdk包含jre,都要分成不同系統下載。2、/usr/openjdk/openjdk-8u40-src-b25-10_feb_2015/openjdk/hotspot/make 這個路徑下有不同的作業系統的makefile,以及特定的指令碼,應該是按照作業系統來採用不同的配置來生成虛擬機器。3、虛擬機器是為了遮蔽作業系統的帶來的環境不一直,但是在呼叫native方法的時候還是要適應系統的吧。

到底行不行,等我測試過再來回答,//TODO

後續執行除錯操作測試未完待續:TODO