CentOS7下編譯OpenJDK8原始碼
本來想自己編譯openJDK10的,結果編譯的時候遇到了一些問題,可能是機子的GCC版本問題吧(我猜要升級到5+),後來參考這篇文章完成了openJDK8的編譯。
最近在學習jvm,平時有關java虛擬機器的知識都是從別人的認識,或者書本中獲得,然而“紙上得來終覺淺,絕知此事要躬行”。想更深刻的認識jvm,還得自己親自去研究一番。於是利用工作之餘的時間自己編譯一套jdk。
編譯前注意問題
1、編譯openjdk時,需要提供一個啟動jdk,即boot JDK;
2、boot JDK需為當前編譯的openjdk的上一個版本。例如這裡編譯的openjdk8,就要用jdk7作為啟動jdk;
3、openjdk8跟之前的版本編譯方式不一樣,之前的版本是基於Ant 、ALT_*環境變數的編譯方式,而openjdk8開始則是”configure && make”模式。(詳細說明可以閱覽官方文件)
我用的JDK的小版本比下面,並且好像JDK1.7要不維護了
環境、工具的準備
OS:CentOS 7 64bit;
OpenJDK:openjdk-8u40;
Boot JDK:jdk-1.7.0.14;
啟動jdk的安裝在這裡就不贅述了,另外還要安裝一些類庫:
yum groupinstall "Development Tools"
yum install libXtst-devel libXt-devel libXrender-devel
yum install cups-devel
yum install freetype-devel
yum install alsa-lib-devel
- 1
- 2
- 3
- 4
- 5
可能以上類庫還不夠,但在以後的configure操作會有提示你缺哪些類庫或者哪些工具,然後根據提示一 一安裝好。
構建並編譯
//開啟要編譯的openjdk目錄
cd /usr/openjdk/openjdk-8u40-src-b25-10_feb_2015/openjdk
//生成配置資訊並構建編譯環境
bash ./configure --with-target-bits=64 --with-boot-jdk=/usr/java/MYBOOTJDK_1.7/ --with-debug-level=slowdebug --enable-debug -symbols ZIP_DEBUGINFO_FILES=0
//開始編譯
make all ZIP_DEBUGINFO_FILES=0
- 1
- 2
- 3
- 4
- 5
- 6
以上的引數簡單作一些說明:
–with-target-bits=64 :指定生成64位jdk;
–with-boot-jdk=/usr/java/MYBOOTJDK_1.7/:啟動jdk的路徑;
–with-debug-level=slowdebug:編譯時debug的級別,有release, fastdebug, slowdebug 三種級別;
–enable-debug-symbols ZIP_DEBUGINFO_FILES=0:生成除錯的符號資訊,並且不壓縮;
若在configure過程中提示安裝工具,則在安裝完工具後執行make clean進行清理方可再次configure,否則會config不成功。
configure成功後執行make 編譯工作,這將是個漫長的等待過程,我編譯的時候總共花費了一個半小時,當看到以下資訊的時候,就意味著大功告成!
----- Build times -------
Start 2017-08-19 20:08:26
End 2017-08-19 22:03:37
00:04:32 corba
00:03:02 demos
00:20:23 docs
00:27:00 hotspot
00:05:30 images
00:01:45 jaxp
00:03:12 jaxws
00:43:27 jdk
00:04:01 langtools
00:02:15 nashorn
01:55:11 TOTAL
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
這裡的話我看java版本的路徑是這個:./build/linux-x86_64-normal-server-slowdebug/jdk/bin/java -version
然後cd 到編譯後的openjdk目錄下的bin子目錄,熟悉吧?就是我們平時用的jdk下的bin目錄,然後執行熟悉的java -version,輸出如下:
[root@localhost bin]# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
- 1
- 2
- 3
- 4
這樣以後就可以用自己編譯的jdk了!
編譯完jdk就結束了嗎?然而對jvm的學習,編譯jdk僅僅是一個開端,接下來就是除錯、學習jdk,開啟jvm之門,去探索java世界的奧祕!
相關推薦
CentOS7下編譯OpenJDK8原始碼
本來想自己編譯openJDK10的,結果編譯的時候遇到了一些問題,可能是機子的GCC版本問題吧(我猜要升級到5+),後來參考這篇文章完成了openJDK8的編譯。 最近在學習j
centos7下用核心原始碼單獨編譯安裝KVM模組
準備:linux系統版本:CentOS-7-x86_64-DVD-1708 (其他系統也可以,核心版本對應就行) 核心版本3.10.0-693.el7.x86_64 1、官網獲取相應版本的核心原始碼,連結:http://vault.centos.org/。
centos7下編譯安裝lnmp和nginx代理實驗
ket orm pass glib href status log nal listen 1、先安裝mysql cd /usr/local/src wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux
Mac下編譯JRTPLIB原始碼 For Android
一.工欲善其事必先利其器: 1.官網下載Jthread和Jrtplib 2.通過 "brew install ninja" 命令安裝ninja 二.解壓下載的Jthread與Jrtplib壓縮包並參考GitHub的文件編寫cmake檔案: 1.在Jthread解壓出的目錄下建立toolcha
詳解Centos7 下編譯安裝Nginx和yum搭建Nginx兩種方法
Nginx 在併發與負載能力方面確實優於 apache,大多數網站都採用基於Nginx 來搭建網站。 下面就來介紹Nginx的搭建 一 原始碼安裝nginx 首先先來安裝Nginx,但是本地的yum倉庫中只有apache,並沒有Nginx,這就需要手動安裝了。 Nginx 的下載官網是這個http
JVM-Ubuntu18.04.1下編譯OpenJDK8
[email protected]:~/jdk8u-dev/build/linux-x86_64-normal-server-release/jdk/bin$ ./java -version openjdk version "1.8.0-internal" OpenJDK Runtime E
ubuntu-12.04.5下編譯openjdk8
1、下載jdk1.7並配置相關環境變數 輸入如下命令開啟檔案: gedit ~/.bashrc 在.bashrc檔案末尾假如如下語句: #java jdk configuration export JAVA_HOME=/usr/lib/j
android開發-Windows環境下編譯FFMPEG原始碼
1.簡介 之前有兩篇文章講到如何在windowsPC端使用FFMPEG命令列程式。 但是我想要在android開發時使用FFMPEG的功能又該怎麼辦?所以就需要編譯FFMPEG,然後才能使用。這才有了這篇文章。 1.先講思路,2.後講具體流程! 但是首先有個問題就是我
Linux-Centos7 下編譯安裝nginx (附nginx開機啟動指令碼)
1.安裝編譯所需環境: yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel 2.下載原始碼包(這裡用的是nginx-1.14.0) wget http://nginx.org/download/
windows下編譯tensorflow原始碼 用其c++介面呼叫訓練好的模型
最近在研究如何用tensorflow的python庫訓練模型,生成pb檔案,再在c++中呼叫這個模型,完成前向的預測;所以就要使用其c++介面,這需要從原始碼編譯tensorflow。 根據官網給出的編譯器對應關係(詳見我的另一篇部落格),最新版(1.12版)的tensor
linux下編譯lua原始碼
步驟: 1.下載lua包 wget -c http://www.lua.org/ftp/lua-5.3.4.tar.gz 2.解壓lua包 tar zxvf lua-5.3.4.tar.g
windows下編譯 ffmpeg原始碼生成靜態庫用於Dev-C++工程
1 set-Up 1.1.下載ffmpeg原始碼ffmpeg-4.0.2.tar.bz2,http://ffmpeg.org/download.html 解壓到 D:\04_project\ffmpeg\ffmpeg-4.0.2 1.2下載mingw 安裝程式 m
ArduPilot原始碼學習--(一)--MAC下編譯ArduPilot原始碼
最近大半個月都在搞ardupilot的東東,我的測試機是一臺250的穿越機,Pixhawk 2.4.8的飛控(比較耐炸,機器剛到那天,測試時,由於GPS有問題,從大概6樓掉下來,四個槳葉的螺絲全掉了,槳葉也掉了兩個,把所有東西找回來重新安裝上,還是可以飛:))。 開始了我的ArduPilot
Linux下編譯openJDK原始碼
學習《深入理解java虛擬機器》,開篇先編譯一個openJDK來了解JDK的原始碼。 書本你上提供了Mac OS和Linux系統下編譯openJDK的方法步驟,並且在windows系統下編譯openJDk也十分麻煩。 於是我就自己安裝了一個Linux系統的虛
Linux下編譯Android原始碼問題彙總
前言 本人最近在研究Android原始碼編譯,現將編譯過程中遇到問題彙總於此。 環境 系統:CentOS 7 x86_64 源 :中科大映象源(詳見這裡) 問題彙總 (1)Increase Java heap s
在centos7上編譯mosquitto原始碼時,出現問題解決辦法
問題一:問題描述: 在centos7上編譯mosquitto原始碼時,出現以下問題: make[1]: 進入目錄“/home/jason/mosquitto-1.2/man” xsltproc mosquitto.8.xml warning: failed to loa
【工作經驗】centos7下編譯gcc 7.2.0
1. 升級gcc到7.2 wget 'http://mirrors-usa.go-parts.com/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.gz' // 下載
CentOS7下編譯安裝ffmpeg3.1.5
一、安裝依賴包 # yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-dev
Win7下編譯mosquitto原始碼
在windows下編譯mosquitto原始碼使用的工具包括: 1、visual studio 2010(用vs .net 2003的編譯器時cmake會提示未識別的c或c++編譯器) 2、cmake 3.1.0(這裡是最新的版本,稍微舊一點的版本應該也可以) 3、mosq
CentOS7下編譯Hadoop-2.7.2詳解
1.工具準備,最靠譜的是hadoop說明文件裡要求具備的那些工具。 到hadoop官網,點選source下載hadoop-2.7.2-src.tar.gz。 利用FileZilla上傳壓縮包到/opt/software/目錄下 在該目錄下,解壓到/opt/modu