Ubuntu 14.04 編譯 OpenJDK8—基於confi

2017-10-22  本文已影响43人  小小帽2010

相比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). 成功後,為下圖所示。

After configure

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

hotspot-only makefile

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

vmware ubuntu 14.04

8). 編譯成功如下圖:

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中。

java.c

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

hotspot-gdb

5). 編譯成功。

上一篇下一篇

猜你喜欢

热点阅读