centos7 mini 系統openjdk9源碼編譯

前提先看完這篇博文http://www.javashuo.com/article/p-ogoruzem-gx.htmlhtml

openjdk的來源

根據GNU協議又稱革奴計劃,是由Richard Stallman在1983年9月27日公開發起的。它的目標是建立一套徹底自由的操做系統。Richard Stallman最先是在net.unix-wizards新聞組上公佈該消息,並附帶《GNU宣言》等解釋爲什麼發起該計劃的文章,其中一個理由就是要「重現當年軟件界合做互助的團結精神」。爲保證GNU軟件能夠自由地「使用、複製、修改和發佈」,全部GNU軟件都有一份在禁止其餘人添加任何限制的狀況下受權全部權利給任何人的協議條款,GNU通用公共許可證(GNU General Public License,GPL)。即「反版權」(或稱Copyleft)概念。故Sun公司於2009年4月15日正式發佈OpenJDK。甲骨文在 2010 年收購Sun以後接管了這個項目。java

Oracle JDK只發布二進制安裝包,而OpenJDK只發布源碼。git

學習openjdk的必要性

馮·諾依曼機原理github

  • 計算機由運算器、控制器、存儲器、輸入設備和輸出設備五部分組成。
  • 採用存儲程序的方式,程序和數據放在同一個存儲器中,指令和數據同樣能夠送到運算器運算,即由指令組成的程序是能夠修改的。
  • 數據以二進制代碼表示。
  • 指令由操做碼地址碼組成。
  • 指令在存儲器中按執行順序存放,由指令計數器指明要執行的指令所在的單元地址,通常按順序遞增,但可按運算結果或外界條件而改變。
  • 機器以運算器爲中心,輸入輸出設備與存儲器間的數據傳送都經過運算器。

 由此咱們得知計算機上設備的運行是須要二進制代碼也就是0,1組合,而計算機處理運算的部分是運算器與控制器也就是如今的微處理器CPU,因此就有了機器碼,機器碼是給CPU下達指令的,機器識別很容易,而人經過機器碼編程太過複雜,因而聰明的人類將機器碼0001,0010這種二進制碼映射成固定的符號,好比0001表明read,0010表明add,因而就有了彙編語言,彙編語言造成的操做指令就是CPU的操做指令,因此每一個CPU都有本身的操做規範,因而就有了8086處理器,Intel 1978年推出的Intel 8086中央處理器中首度出現,它是從Intel 8008處理器中發展而來的,而8008則是發展自Intel 4004的。8086在三年後爲IBM PC所選用,以後x86便成爲了我的計算機的標準平臺,成爲了從來最成功的CPU架構。 編程

8086是16位處理器;後續有了32位的80386處理器,直到2003年AMD對於這個架構發展了64位的擴充,並命名爲AMD64。後來Intel也推出了與之兼容的處理器,並命名爲Intel 64。二者通常被統稱爲x86-64x64,開創了x86的64位時代。這裏16位32位64位表明的是寄存器的個數。centos

一來基於x86架構造成的指令集對於人類仍是太複雜,二來每一個CPU在指令集上都會有所不一樣,這樣基於某個CPU寫出來的軟件只能給特定的CPU使用,因而在基於x86架構的指令集上開始誕生了彙編語言,彙編語言對人仍是不太友好,因而人類又發明高級語言,好比C , C++語言,這樣高級語言和彙編語言直接映射指令集,因而在這種映射之間就誕生了編譯器,這就是編譯原理。瀏覽器

(source language)源程序→編譯器 →目標機器代碼程序(object codebash

後來人類又發明了面向對象的編程語言,這種語言更貼合人的思惟邏輯,因而主角誕生了--java超高級語言架構

後來sun公司的程序猿經過JNI將JAVA,C,C++封裝在一塊兒就造成JDK,JNI是Java Native Interface的縮寫,它提供了若干的API實現了Java和其餘語言的通訊(主要是C&C++)。因而在2009年,sun公司將jdk源碼公佈於衆,openjdk就這樣誕生了。編程語言

openjdk的編譯

本人編譯的是openjdk9

openjdk9源碼地址http://hg.openjdk.java.net/jdk9

這是一個版本樹,基於Mercurial搭建的一個代碼託管平臺,相似於github開源中國的碼雲

打開本地的centos7虛擬機,請確保本地電腦聯網而且網速要很好。網速差就找個網速很好的地方,不然你會哭的。我已經哭過了。

yum install mercurial

下載openjdk9的編譯指南項目源碼,這個源碼下都是須要編譯和下載openjdk9源碼的bash腳本和編譯指南

openjdk9指南項目下載地址http://hg.openjdk.java.net/jdk9/jdk9/

點擊zip下載到本地

而後解壓zip包進入到\common\doc的目錄下

用瀏覽器打開building.html並翻譯成中文

而後根據指南開始你的表演

最好經過root權限登陸centos7虛擬機

clone指南項目到/opt目錄下 

hg clone http://hg.openjdk.java.net/jdk9/jdk9
cd jdk9
bash get_source.sh

請保持耐心等待源碼下載完成

下載編譯器,外部庫和頭文件

sudo yum groupinstall "Development Tools"

而後安裝引導jdk8

sudo yum install java-1.8.0-openjdk-devel

運行配置參數

bash configure --with-target-bits=64 --disable-warnings-as-errors --with-debug-level=slowdebug --with-boot-jdk=/usr/jdk1.8.0_161

將這個--with-boot-jdk=/usr/jdk1.8.0_161修改成本身的jdk絕對路徑

編譯openjdk9源碼

make images

 進入到根目錄下將jdk環境變量修改爲本身的路徑./build/*/images/jdk/

vi /etc/profile
source /etc/profile
java -version

驗證成功

如今開始openjdk9的調試吧!

相關文章
相關標籤/搜索