歷經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
##進入到/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
##進入到/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
##進入/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