初次編譯openJDK8

最近開始看《深刻理解Java虛擬機》這一本書,這本書出版的時候Oracle尚未推出JDK8,可是做者在1.5章節中對JDK發展的預測,仍是很準確的,就像他函數式編程,模塊化等,當時看到這裏的時候就挺佩服做者的高瞻遠矚的,這幾點基本上都預測到了,看到這裏也讓我對這本書有了更多的興趣。html

第一章的最後就是本身動手編譯OpenJDK,JDK7仍是比較久遠了,直接來JDK8吧。java

介紹一下環境linux

  • 系統是 centos7
  • Bootstrap JDK 1.8
  • OpenJDK 1.8

由於是頭一次編譯openjdk,因此選擇本身的服務器做爲環境。以前我在這臺服務器上已經安裝過了JDK8,正好就能夠用來作個人BootStrap jdk了。(linux安裝jdk8就不介紹了。)c++

BootStrap JDK是openjdk的執行jdk,由於openjdk是用java寫的,java須要一個環境來運行。編程

以前使用centos

hg clone hg.openjdk.java.net/jdk8u/jdk8u jdk8u服務器

這條命令去下載openjdk,可是後來查了一下 openjdk的目錄結構,發現我下的這個跟網上的不同,因而又換了一個。地址是:app

pan.baidu.com/s/1dKrYOlx6… 密碼: r653模塊化

正確的目錄結構以下圖: 函數式編程

那麼下面去安裝所須要的東西。

安裝alsa包

yum install alsa-lib-devel

安裝cups-devel

yum install cups-devel

安裝X相關的庫

yum install libX* yum install xrender

安裝g++

yum install gcc gcc-c++

安裝freetype

yum install freetype

安裝ant

yum install ant yum install ccache

安裝好後設置環境變量

export JAVA_HOME=/usr/local/java/jdk1.8.0_161

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin


export LANG=C
unset JAVA_HOME
unset CLASSPATH

export ALT_BOOTDIR=/usr/local/java/jdk1.8.0_161
export ANT_HOME=/usr/bin/ant
export ALLOW_DOWNLOADS=true
export USE_PRECOMPILED_HEADER=true
export ARCH_DATA_MODEL=64
export HOTSPOT_BUILD_JOB=6
export ALT_PARALLEL_COMPILE_JOBS=6
export SKIP_DEBUG_BUILD=false
export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
複製代碼

這是我本身的環境變量。

而後執行configure文件

chmod +x configure ./configure

接着編譯

make

第一次編譯的時候是用了hg下來的包,怎麼編譯都不對,到最後都是報錯。因而乎換了上面連接裏的jdk,第一次編譯也是有問題,可是第二次就行了。附圖以下。 evernotecid://C6FAA89E-4A5B-44D0-A821-BA0101E2FCEC/appyinxiangcom/11444250/ENResource/p176

那麼怎麼看是真的編譯好了呢? 用java -version 這個命令,而且跟sun jdk對比一下就知道了。 sun jdk: evernotecid://C6FAA89E-4A5B-44D0-A821-BA0101E2FCEC/appyinxiangcom/11444250/ENResource/p174

open jdk: evernotecid://C6FAA89E-4A5B-44D0-A821-BA0101E2FCEC/appyinxiangcom/11444250/ENResource/p175

openJDK到這裏就編譯好了,它的好處就是能夠查看所有的源碼,甚至能夠添加斷點去運行,更方便了咱們研究JVM原理。

參考:

https://www.cnblogs.com/mr-long/p/5841604.html
  https://www.jianshu.com/p/5db1131b3038複製代碼
相關文章
相關標籤/搜索