Ubuntu 14.04 編譯 OpenJDK8—基於configure&make

相比windows下編譯openjdk8,linux下的坑並不少,這裡為了方便選擇了Ubuntu 14.04 64位元的作業系統,基本的linux命令操作一筆帶過,有疑問可自行搜索。(別選16.04,問題比較多:make降級、gcc版本高、libfreetype問題等)


1. 不用說,先搭環境,建立虛擬機。安裝完之後,做以下操作:

1). 把當前登入帳戶加入sudoer.

2). 添加國內apt-source mirror:在寫此文時,阿里雲鏡像有些問題,我用的是網易。

3). sudo apt-get update

4). sudo apt-get install openssh-server vim openjdk-7-jdk g++

5). 安裝完openssh-server可用putty登入,此步可選。


2. 安裝依賴庫,並編譯

1). sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libfreetype6-dev libcups2-dev libasound2-dev

2). 把openjdk源代碼解壓,我下載的是"openjdk-8-src-b132-03_mar_2014",可自行搜索或者去github下載。

3). 進入openjdk目錄,chmod +x ./configure

4.) ./configure --with-target-bits=64 --with-debug-level=slowdebug

5). 成功後,為下圖所示。

Ubuntu 14.04 編譯 OpenJDK8—基於configure&make_第1张图片
After configure

6). 修改:vim ./hotspot/make/linux/Makefile 228行,添加4%,使其支持4.x內核。

Ubuntu 14.04 編譯 OpenJDK8—基於configure&make_第2张图片
hotspot-only makefile

7). make all ZIP_DEBUGINFO_FILES=0 JOBS=16 ( JOBS參數 根據虛擬機不同配置而設置)

Ubuntu 14.04 編譯 OpenJDK8—基於configure&make_第3张图片
vmware ubuntu 14.04

8). 編譯成功如下圖:

Ubuntu 14.04 編譯 OpenJDK8—基於configure&make_第4张图片
build done

3. 修改hotspot啟動腳本

1). cd ./build/linux-x86_64-normal-server-slowdebug/hotspot/linux_amd64_compiler2/debug,從名字可見,JDK8默認的是C2編譯,此編譯在啟動時會做一些分析再去優化:逃逸分析、棧上分配等。

2). 修改hotspot,其實是一個shell 腳本。由於目錄過長,可執行export PS1="[\u@\h \W]\$"。找到102行,改為對應的JDK目錄。

hotspot shell

3). 找到170行,把break JNI_CreateJavaVM改為break JavaMain(可選)。JavaMain是虛擬機的主入口,在openjdk\jdk\src\share\bin\java.c中。

Ubuntu 14.04 編譯 OpenJDK8—基於configure&make_第5张图片
java.c

4). 執行./hotspot -gdb,可看到以下信息:

Ubuntu 14.04 編譯 OpenJDK8—基於configure&make_第6张图片
hotspot-gdb

5). 編譯成功。

你可能感兴趣的:(Ubuntu 14.04 編譯 OpenJDK8—基於configure&make)