現在很多語言都不開發運行環境了,都選擇在JRE上運行,足以證明JVM的優越。你精通了JVM,未來的路才可能走得輕松。這篇文章是你走近jvm的第一篇,編譯Openjdk8源碼
編譯環境
操作系統:Ubuntu16 (ubuntu-16.04.6-desktop-amd64.iso workstation用6.5-7)
boot jdk:jdk7 (jdk-7u80-linux-x64.tar.gz)
Openjdk:jdk8 (openjdk-8u40-src-b25-10_feb_2015.zip)
編譯前准備
Ubuntu提供兩種進入方式,一個是我們平常最熟悉的圖形界面形式,還有一種是純命令行方式
Ctrl + Alt + F6 即可進入純命令行模式,進入后,需要輸入用戶名,密碼
接着安裝vim工具,並用vim打開如下文件
sudo vim /etc/network/interfaces
添加以下內容
修改如下文件,將managed設置為true,如果是只讀文件,需要授權(此處不再贅述)
/etc/NetworkManager/NetworkManager.conf
打開如下文件, 添加內容
/etc/resolvconf/resolv.conf.d/base
重啟網絡服務
service network-manager restart
Ubuntu 更改文件權限及chmod詳細用法如下:
一、常用方法如下:(其中×××指文件名)
(所有者有讀和寫的權限,組用戶只有讀的權限)
sudo chmod 644 ×××
(每個人都有讀和寫以及執行的權限)
sudo chmod 777 ×××
輸入以下命令進行安裝遠程ssh服務
# sudo apt-get install openssh-server
若沒有ssh,需要執行
# sudo apt-get install ssh
(設置完靜態ip,並用xshell遠程連接成功,如下圖)
編譯流程
1、安裝依賴(這步比較慢,耐心等待)
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfreetype6-dev libasound2-dev ccache
或者
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev sudo apt-get install libcups2-dev sudo apt-get install libfreetype6-dev sudo apt-get install libasound2-dev
2、安裝boot jdk
因為openjdk源碼中有些功能是用Java代碼實現的,比如調試工具:jps、jstat等,還有一些核心jar包,如rt.jar、tools.jar等,都需要相應版本的JDK。boot jdk需要比你編譯的jdk版本低,這里我們用jdk7
直接解壓到Documents目錄下,然后配置下環境
tar zxvf jdk-7u80-linux-x64.tar.gz
配置path
vim ~/.bashrc
文件底部加入下面三句話(改成你自己的用戶名)
export JAVA_HOME=/home/lusai/Documents/jdk1.7.0_80 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
讓配置的path重新生效
source ~/.bashrc
查看是否安裝成功
java -version
3.解壓openjdk8 ,
安裝 unzip
sudo apt install unzip
進入 openjdk8 的主目錄,解壓文件
unzip openjdk-8u40-src-b25-10_feb_2015.zip
進去解壓的文件
cd /home/lusai/Documents/openjdk
執行配置命令,填寫Boot jdk的安裝目錄
sudo bash configure --with-target-bits=64 --with-boot-jdk=/home/lusai/Documents/jdk1.7.0_80/ --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0
如果配置成功,則會顯示如下信息:
開始編譯(時間較長,請耐心等待)
sudo make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=0
看到下面這個畫面就證明編譯成功,就可以用了
若在編譯過程中,出現以下錯誤,請不要慌張,這並沒有太大問題(網上是這么說的,最后確實也是沒太大問題):
查看剛才編譯成功的openjdk版本。首先進入 以下目錄,
cd /home/lusai/Documents/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/bin
再執行命令 ./java -version。可得如下結果:
./java -version
至此,Openjdk8編譯大功告成