00.編譯OpenJDK-8u40的整個過程

前言

歷經2天的折騰總算把OpenJDK給編譯成功了,要說爲啥搞這個,還得從面試提及,最近出去面試常常被問到JVM的相關東西,總感受本身之前學的太淺薄,因此回來就打算深刻學習,目標把《深刻理解Java虛擬機》這個本書要啃下來。接下來問題來了,讀個這個書的人都知道這個書的第一章就是講如何編譯本身的JDK,書上的東西看着簡單,自動動手另外是一回事,通過這麼幾天折騰體會很深入,作技術的,仍是要踏踏實實的一步步來。好高騖遠是大忌。廢話很少說,下面給出本身編譯過程java

環境要求

系統:CentOS7linux

編譯源碼版本:OpenJDK-8u40git

下載地址:連接:https://pan.baidu.com/s/1LRP_67uBezBqn-gfStlH-A 密碼:o65r程序員

Bootstrap JDK:Oracle JDK1.7.0_75面試

下載地址:連接:https://pan.baidu.com/s/1sKuXkNcnjJp-qCe5_4_qVw 密碼:n1fqbootstrap

ccache版本:3.14bash

下載地址:連接:https://pan.baidu.com/s/1-qvxAMkaJS1ASSVbNZHkFA 密碼:m9fjjvm

編譯因此須要的安裝包以及系統文件下載地址:工具

連接:https://pan.baidu.com/s/1Jb1iSSmutZKLmzjncIdRXA 密碼:myk9學習

安裝前準備

yum update
yum -y install wget
​
###約定以上的安裝包下載上傳到/usr/local/src目錄

安裝編譯環境

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

安裝ccache

##進入到/usr/local/src目錄
cd /usr/local/src
##解壓
tar -zxvf ccache-3.1.4.tar.gz
##安裝
cd ccache-3.1.4
##配置編譯
./configure
##編譯安裝,默認是安裝在/usr/local/bin/ccache
make && make install

安裝Oracle JDK1.7.0_75爲Bootstrap JDK

##進入到/usr/local/src
cd /usr/local/src
##建立bootstrap jdk安裝的目錄
mkdir /usr/local/java
##解壓jdk-7u75-linux-x64.tar.gz
tar -zxvf jdk-7u75-linux-x64.tar.gz -C /usr/local/java
##配置環境變量
vi /etc/profile
##在最後面加上jdk環境變量
export JAVA_HOME=/usr/local/java/jdk1.7.0_75
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
###保存當即生效
source /etc/profile

開始編譯OpenJDK

##進入/usr/local/src
cd /usr/local/src
##解壓openjdk源碼
tar -zxvf openjdk-8u40-src-b25-10_feb_2015.tar.gz -C /usr/local
##進入解壓目錄
cd /usr/local/openjdk
##開始編譯配置
bash ./configure 
--with-target-bits=64 
--with-boot-jdk=/usr/local/java/jdk1.7.0_75/ 
--with-debug-level=slowdebug 
--enable-debug-symbols ZIP_DEBUGINFO_FILES=0
##開始編譯
make all ZIP_DEBUGINFO_FILES=0
!!!!若是運氣好,就等着編譯結果吧

以上的參數簡單做一些說明: –with-target-bits=64 :指定生成64位jdk; –with-boot-jdk=/usr/local/java/jdk1.7.0_75/:啓動jdk的路徑; –with-debug-level=slowdebug:編譯時debug的級別,有release, fastdebug, slowdebug 三種級別; –enable-debug-symbols ZIP_DEBUGINFO_FILES=0:生成調試的符號信息,而且不壓縮;

若在configure過程當中提示安裝工具,則在安裝完工具後執行make clean進行清理方可再次configure,不然會config不成功。

編譯結果展現圖

 

編譯成功後進入到/usr/local/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin目錄執行 ./java -version 查看jdk版本

cd /usr/local/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin
./java -version

接下來咱們能夠修改環境變量爲咱們如今本身編譯的jdk

vi /etc/profile
#export JAVA_HOME=/usr/local/java/jdk1.7.0_75
export JAVA_HOME=/usr/local/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
​
##環境變量生效
source /etc/profile
##測試如今的jdk版本信息
java -version

到此編譯本身的JDK就算順利完成了,昨晚爲這個還熬夜到凌晨三點,想着放棄,可是想一想都投入了這麼長時間放棄惋惜,做爲一個java開發人員不明白jvm,永遠不算一個合格的java程序員。因此這個信念讓我堅持有了第一次這麼認真。就從這個坎做爲個人技術深刻研究的起點吧!加油,愛生活,更愛程序.....

知識積累連接:https://gitee.com/shxjinchao/java_knowledge_base

相關文章
相關標籤/搜索