CentOS編譯OpenJDK
一、準備編譯環境
1、安裝alsa音效卡驅動包
yum install alsa-lib-devel
2、安裝cups-devel
yum install cups-devel
3、安裝X相關的庫
yum install libX*
4、安裝gcc編輯器
yum install gccgcc-c++
5、安裝freetype
由於系統是Centos的,所以從http://rpm.pbone.net/index.php3/stat/4/idpl/26641422/dir/centos_7/com/freetype-2.4.11-9.el7.x86_64.rpm.html下載rpm包
rpm –ivh freetype-2.4.11-9.el7.src.rpm
6、安裝libstdc
yum install libstdc++-static7、安裝Ant,用於執行Java編譯程式碼中的Ant指令碼安裝包下載地址:http://ant.apache.org/bindownload.cgi
tar –zxvf apache-ant-1.10.1-bin.tar.gz
8、安裝1.7版本的JDK
從官網下載安裝包,使用filezila上傳到虛擬機器
解壓縮安裝包:gunzip jdk-7u79-linux-x64.gztar –xvf jdk-7u79-linux-x64.gz
修改環境變數
vim /etc/profile
在檔案末尾新增下面的命令
#set environment
JAVA_HOME=/usr/java/jdk1.7.0_79
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH儲存退出,執行source /etc/profile使環境變數立即生效
執行java –version驗證安裝是否成功
9、下載OpenJDK原始碼
https://www.mercurial-scm.org/release/centos7/RPMS/x86_64/
這裡選擇的是:openjdk-7u75-src-b13-18_dec_2014.zip
解壓縮:unzip openjdk-7u75-src-b13-18_dec_2014.zip
二、進行編譯
OpenJDK在編譯時讀取的環境變數有很多,但大多都有預設值,必須設定的只有兩個:LANG和ALT_BOOTDIR,前者是設定語言選項,必須設定為:
export LANG=C
否者在編譯前的驗證階段會出現一個HashTable空指標異常。另外一個ALT_BOOTDIR是Bootstrap JDK,因為OpenJDk的各個組成部分(Hostspot、JDK API、JAXWS、JAXP……),有的是用C++編寫的,更多的程式碼是用
JAVA語言自身實現的。因此編譯這些Java程式碼需要用到一個可用的JDK,官方稱這個JDK為“Bootstrap JDK”。
export ALT_BOOTDIR=/usr/java/jdk1.7.0_79
另外,之前設定的JAVA_HOME和CLASSPATH兩個環境變數在編譯之前必須取消,否則Makefile指令碼中檢查到有這兩個環境變數存在,會有警告提示。
unset JAVA_HOME
unset CLASSPATH
#允許自動下載依賴
export ALLOW_DOWNLOADS=true#設定Ant的安裝路徑
export ANT_HOME=/root/apache-ant-1.10.1
#設定並行編譯的執行緒數,設定成和CPU核心數量一樣
export HOTSPOT_BUILD_JOB=4
export ALT_PARALLEL_COMPILE_JOBS=4
比較本次build出來的映像和之前版本的差異,必須設定為false,否則sanity檢查會報缺少先前版本JDK的映像的錯誤提示。如果已經設定dev或者DEV_ONLY=true,這個不顯式設定也行。
export SKIP_COMPARE_IMAGES=true
#使用預編譯標頭檔案,不加這個編譯會更慢一些
export USE_PRECOMPILED_HEADER=true# 64位jdk
export ARCH_DATA_MODEL=64
#要編譯的內容
export BUILD_LANGTOOLS=true
#export BUILD_JAXP=false
#export BUILD_JAXWS=false
#export BUILD_CORBA=false
export BUILD_HOTSPOT=true
export BUILD_JDK=true
#要編譯的版本
#export SKIP_DEBUG_BUILD=false
#export SKIP_FASTDEBUG_BUILD=true
#export DEBUG_NAME=debug
#把它設定成false可以避免javaws和瀏覽器Java外掛之類的部分的build
export BUILD_DEPLOY=false
#把它設定成false就不會build出安裝包,因為安裝包裡有些奇怪的依賴,但即便不build出它也已經能得到完整的JDK映像,所以還是別build它好了。
export BUILD_INSTALL=false
#編譯結果所存放的路徑
export ALT_OUTPUTDIR=/root/openjdk/build編譯檢查
進入之前解壓縮的OpenJDK的根目錄執行:make sanity
檢查通過後,執行make開始編譯。我這裡報了一個錯
這是因為我這裡使用的Ant版本是1.10.1,應該對應1.8版本jdk,而現在使用的jdk是1.7的,所以需要重新下載1.9版本及以下的Ant。
下載Ant,上傳解壓縮後,執行export ANT_HOME= /root/apache-ant-1.9.9
然後重新執行make,報了下面的錯誤
解決方法是將CurrencyData.properties檔案中所有的時間改為10年以內。
cd openjdk/jdk/src/share/classes/java/util/
vim CurrencyData.properties編譯完成後,輸出如下的日誌清單
配置debug版jdk
編譯完成後進入OpenJDK原始碼下的build/j2sdk-image目錄(或者build-debug、build-fastdebug這兩個目錄),這是整個JDK的完整編譯結果,複製到JAVA_HOME目錄,就可以作為一個完整的JDK使用,編譯出來的虛擬機器,在-version命令中帶有使用者的機器名。修改JAVA_HOME變數為j2sdk-image的目錄
在大多數時候,如果我們並不關心JDK中HotSpot虛擬機器以外的內容,只想單獨編譯HotSpot虛擬機器的話(例如除錯虛擬機器時,每次改動程式都執行整個OpenJDK的Makefile,速度肯定受不了),那麼使用原始碼中/root/openjdk/hotspot/make目錄下的Makefile進行替換即可,其他引數與前面是一致的,這時候虛擬機器的輸出結果存放在/root/openjdk/build/hotspot/outputdir/linux_amd64_compiler2目錄中,進入後可以看見以下幾個目錄。
這些目錄對應了不同的優化級別,優化級別越高,效能自然越好,但是輸出程式碼與原始碼差距就越大,難於除錯,具體哪個目錄有內容,取決於make命令後面的引數。
在編譯結束後,執行虛擬機器之前,還要手工編輯/root/openjdk/build/hotspot/outputdir/linux_amd64_compiler2/jvmg目錄下的env.sh(find -name env.sh查詢檔案)檔案,這個檔案由編譯指令碼自動生成,用於設定虛擬機器的環境變數,裡面已經發布了“JAVA_HOME、CLASSPATH、HOTSPOT_BUILD_USER”3個環境變數,還需要增加一個“LD_LIBRARY_PATH”,內容如下:
LD_LIBRARY_PATH=.:${JAVA_HOME}/jre/lib/amd64/native_threads:${JAVA_HOME}/jre/lib/amd64
export LD_LIBRARY_PATH
source env.sh
然後執行以下命令啟動虛擬機器(這時啟動器為gamma),輸出版本號。
. ./env.sh
./gamma -version
相關推薦
CentOS編譯OpenJDK
一、準備編譯環境 1、安裝alsa音效卡驅動包 yum install alsa-lib-devel 2、安裝cups-devel yum install cups-devel 3、安裝X相關的庫 yum install libX* 4、安裝gcc編輯器 yu
CentOS 6.9 Minimal 編譯OpenJDK 7
建議 定向 mic emp nta 生效 reads TP lease 今天學習《深入理解Java虛擬機:JVM高級特性與最佳實踐》一書,並動手在Linux系統上編譯OpenJDK 7,初次搞不太順利,特記錄下編譯操作細節。 一、前期準備 約定:工具默認安裝目錄是/usr/
Centos 編譯安裝Apache subversion-1.9.7 + httpd 2.4.32
Subversion HTTPsvn是Subversion的簡稱,是一個開放源代碼的版本控制系統。一、下載安裝Subversion必要的源碼文件Apachewget http://mirrors.shu.edu.cn/apache/httpd/httpd-2.4.32.tar.gzSubversionwge
CentOS 編譯安裝 python 3.5
centos python 源碼安裝 CentOS 6自帶的python是2.6的,下面記錄下CentOS6源碼安裝python 3.5的過程 #wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz #tar xf Python
centos 編譯內核
eabi root 官方 5.4 linux data com iyu none Linux內核源碼官方下載地址: https://www.kernel.org/pub/linux/kernel/ 系統:centos7.5 1、在官方下載自己需要的內核版本 例如:linux
在 CentOS 7上安裝並配置 Python 3.6 環境 超詳細的 Linux CentOS 編譯安裝python3 Linux下編譯安裝python3
前言 按照此方法安裝保證以下報錯什麼的統統都沒有! 基礎環境 系統:centos7.4 軟體:python3 Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connect
Java虛擬機器(JVM原始碼):編譯OpenJDK原始碼
為什麼要自己編譯JDK原始碼 作為一個搞技術的同學,如果想在技術這條路上走下去,還是多研究些本質性的東西,修煉下內功。尤其是現在JDK都出到10了,如果你沒有研究過,還是停留在之前的時代,那麼確實說不過去。做技術還是得有追求。 一、JDK和OpenJDK的異同點 關於兩者之間
linux 編譯openjdk失敗記
最近開始學習jvm虛擬機器的知識,第一章就是自己編譯一個openjdk,結果編譯時遇到一個問題,嘗試了好久都沒能解決,心累的不想再試了。所以打算先繼續往下學習,等以後如果有毅力再來試一試,另寫下這篇部落格謹記錄自己編譯openjdk失敗了的過程和遇到的錯誤。 一、安裝lin
Centos編譯OpenJDK7原始碼
一、寫在前面 1.Centos版本:CentOS Linux release 7.3.1611 (Core) x86_64 2.ant版本:apache-ant-1.9.13 3.freetype版本:freetype-2.3.12 4.openjd
centos刪除openJDK,安裝jdk(離線版)及shell指令碼安裝
1.環境 jdk1.8.0_191 centos7.5 2.為什麼要用離線 很多客戶現場都不能聯通外網,只能進行離線安裝。這裡即將用兩種方式安裝jdk,一種是手動的離線安裝,一種是指令碼安裝。 3.手動安裝jdk 3.1 檢視jdk版本資訊 java -versi
centos 編譯安裝 mysql5.6
一、編譯安裝 Mysql 前的準備工作 安裝編譯原始碼所需的工具和庫 yum install gcc gcc-c++ ncurses-devel perl 安裝 cmake,從 這裡 下載原始碼並編譯安裝 wget http://www.cmake.org/f
centos 編譯報錯,缺少libssh2.so
報錯Log: /usr/bin/ld: cannot find -lssh2 collect2: ld returned 1 exit status 解決方式: 1.下載原始碼,wget http://www.libssh2.org/download
Centos編譯執行一個簡單的C++程式
I、準備工作: 1) 一個類UNIX系統,這裡選擇CentOS 7 2) 安裝gcc編譯器,方法很多,一種簡單的安裝方式:yum install gcc-c++ 注:yum install g++ 會失敗,因為沒有g++這個包 安裝好後顯示如下: 3)建立測試
centos 編譯 python3.7
轉:https://www.cnblogs.com/kimyeee/p/7250560.html 1. 安裝依賴環境 # yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel
Linux下編譯openJDK原始碼
學習《深入理解java虛擬機器》,開篇先編譯一個openJDK來了解JDK的原始碼。 書本你上提供了Mac OS和Linux系統下編譯openJDK的方法步驟,並且在windows系統下編譯openJDk也十分麻煩。 於是我就自己安裝了一個Linux系統的虛
Mac 編譯 openjdk
一、編譯環境 1. MacOS High Sierra 10.13.2 2. XCode 9.4.1(Command Line Tools) 3. jdk版本:jdk7u71 網盤下載 或者通過官網下載 4. openjdk: jdk8u-dev 或者通過me
CentOS7手動編譯OpenJDK
1.首先下載一個OpenJDK的zip包,URL路徑為: http://hg.openjdk.java.net/jdk7/jdk7/jdk/ 挺不顯眼的;左側有個zip,點一下就會下載下來 2.在CentOS系統上安裝 yum -y install gcc gcc-c++
CentOS 編譯安裝 mysql
1、前期準備 1.1 環境說明: 作業系統: CentOS release 6.4 (Final) [檢視命令 cat /etc/redhat-release ] mysql : mysql-5.6.26 1.2 徹底刪除系統自帶mysql
win10-x64系統下編譯OpenJDK
win10-x64系統編譯OpenJDK 目錄 本文主要講解在win10環境下編譯OpenJDK遇到的問題和解決辦法,在此先宣告一下在windows系統上編譯OpenJDK會遇到一些很坑的問題,如果不介意系統的話還是推薦在Linux上編譯。
centos 編譯核心
編譯步驟: 1. make mrproper #清理上次編譯的現場 2. make menuconfig #配置核心 3. make #編譯核心及核心模組 4. make modules_install #將核心模組安裝到 /lib/modules 5.