在Ubuntu 12.04 32位系統中編譯OpenJDK 7u40

環境準備

個人編譯環境的爲Ubuntu 12.04 32位系統,雙核html

OpenJDK 源碼

經過 Mercurial 代碼管理工具下載太慢,這裏選擇直接下載官網源碼包java

Apache Ant

用於執行 Java 編譯代碼中的 Ant 腳本linux

Bootstrap JDK

編譯 OpenJDK 須要一個可用的 JDKubuntu

安裝依賴軟件命令

打開終端,輸入如下命令:瀏覽器

sudo apt-get install build-essential gawk m4 openjdk-6-jdk
libasound2-dev libcups2-dev libxrender-dev xorg-dev xutils-dev
x11proto-print-dev binutils libmotif3 libmotif-dev ant

如何找不到軟件包,能夠先執行如下命令:jvm

sudo apt-get update

這個命令將會更新可用軟件列表工具

解壓JDK源碼

將源碼解壓到 /home/jacend/Download/ 目錄下面,你們能夠本身選擇一個合適的目錄ui

unzip openjdk-7u40-fcs-src-b43-26_aug_2013,zip /home/jacend/Download/

解壓後再 /home/jacend/Download/ 下面會出現一個 openjdk 的源碼目錄,該目錄下包括了jdk,hotspot以及一些Java工具的源碼.net

編譯

建立一個安放編譯結果的目錄

我會將編譯的結果放在 /home/jacend/pgSoft/openjdk_7u4/build插件

mkdir /home/jacend/pgSoft/openjdk_7u4
cd /home/jacend/pgSoft/openjdk_7u4
mkdir build

建立一個運行編譯的腳本

咱們將在解壓的源碼包中建立一個 build_open_jdk.sh 的腳本而且賦予執行權限

cd /home/jacend/Download/openjdk/
touch build_open_jdk.sh
sudo chmod +x build_open_jdk.sh

sudo gedit build_open_jdk.sh

腳本中輸入如下內容

#語言選項
export LANG=C
## Bootstarp JDK 的安裝路徑,也就是咱們安裝的 openJDk 6 的根目錄
export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk-i386
#容許自動下載依賴
export ALLOW_DOWNLOADS=true

#並行編譯的線程數,設置與CPU內核數量一致,個人筆記本爲雙核CPU,此項能夠提升編譯速度
export HOTSPOT_BUILD_JOBS=6
export ALT_PARALLEL_COMPILE_JOBS=6

export SKIP_COMPARE_IMAGES=true
#使用預編譯頭文件,不加這個編譯會慢不少
export USE_PRECOMPLIED_HEADER=true

#要編譯的內容
export BUILD_LANGTOOLS=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true

#把它設置爲 false 能夠避開 javaws 和瀏覽器插件之類的部分的 build
BUILD_DEPLOY=false

#把它設置爲 false 就不會 build 出安裝包,由於安裝包中有些奇怪的依賴
#但即使不build出它已經能夠獲得完成的JDK映像了,因此仍是不 build 了
export BUILD_INSTALL=false

#編譯結果所存在的路徑
export ALT_OUTPUTDIR=/home/jacend/pgSoft/openjdk_7u4/build

#這兩個編譯變量必須去掉,否則編譯會出問題
unset JAVA_HOME
unset CLASSPATH

#檢查設置是否正確
make sanity
make 2>&1 |tee $ALT_OUTPUTDIR/build.log

執行腳本

cd /home/jacend/Download/openjdk/
sh ./build_open_jdk.sh

編譯過程當中的錯誤

列舉一下編譯過程的錯誤,供你們參考,你們能夠預先處理了再執行編譯腳本

  1. error: "__LEAF" redefined [-Werror]
    碰到這個錯誤能夠 參考 在這個環境下應該不會報這個錯誤

  2. JVM_FindClassFromCaller
    修改文件:/home/jacend/Download/openjdk/hotspot/make/linux/Makefile 註釋掉包含test_gamma字樣的全部行便可

  3. Error: time is more than 10 years from present: 1104530400000

    進入解壓後openJDk目錄,找到CurencyData.properties,將全部涉及到時間修改成10年以內的時間,例如將2004-01-13-20-00-00 修改爲 2016-01-13-20-00-00

    cd /home/jacend/Downloads/openjdk/jdk/src/share/classes/java/util
    sudo gedit CurrencyData.properties
相關文章
相關標籤/搜索