openjdk7的編譯

第一步安裝依賴
執行如下shell

# 因爲我已經裝了ant和jdk(注意這個jdk,所以不再安裝)
sudo apt-get install buildessential gawk m4 libasound2-dev libcups2-dev libxrender-dev xorg-dev xorg-dev xutils-dev x11proto-print-dev binutils libmotif3 libmotif-dev

第二步下載安裝bootstrap jdk
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html?ssSourceSiteId=otncn
編譯openjdk7所用的bootstrap jdk不能是高版本的,必須要用jdk6(血淚史阿,切記)。
我把它安裝在/home/jasper/software/apache/jdk1.6.0_45

第三步下載openjdk7源碼
下載地址:http://jdk7.java.net/source.html
下載下來的是一個zip文件,解壓即可。
我把它解壓到/home/jasper/software/apache/openjdk_7u40

第四步修改CurrencyData.properties的日期
打開文件/home/jasper/software/apache/openjdk_7u40/openjdk/jdk/src/share/classes/java/util/CurrencyData.properties
修改此文件裏的所有日期。比如相應的+n年,以保證所有的日期都在最近10年內

第五步設置編譯需要的環境變量
執行如下shell

cd /home/jasper/software/apache/openjdk_7u40/openjdk
# Bootstrap JDK的安裝路徑。必填
export ALT_BOOTDIR=/home/jasper/software/apache/jdk1.6.0_45

# 允許自動下載依賴
export ALLOW_DOWNLOADS=true

# 並行編譯的線程數,設置爲和CPU內核數量一致即可
export HOTSPOT_BUILD_JOBS=6
export ALT_PARALLEL_COMPILE_JOBS=6

# 比較本次build出來的映像與先前版本的差異。
export SKIP_COMPARE_IMAGES=true

# 使用預編譯頭文件,不加這個編譯會更慢一些
export USE_PRECOMPILED_HEADER=true

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

# 把它設置爲false可以避免javaws和瀏覽器java插件之類的部分的build
BUILD_DEPLOY=false

# 把它設置爲false就不會build出安裝包。因爲安裝包裏有一些奇怪的依賴
# 但即使不build出它也已經能得到完整的JDK映像,所以還是別build它好了
BUILD_INSTALL=false

# 編譯結果存放的路徑
export ALT_OUTPUTDIR=/home/jasper/software/apache/openjdk_7u40/build

# 這兩個環境變量必須去掉,不然會有很詭異的事情發生
unset JAVA_HOME
unset CLASSPATH

# 輸出日誌?
make 2>&1 | tee $ALT_OUTPUTDIR/build.log

# 編譯設置檢查
# make sanity

注意查看最後是否有報錯,如報錯請安裝相應的依賴

PS:請把上文所說的所有shell在一個終端裏執行。

遇到的一些問題:
1、/test_gamma中無法找到gamma
修改文件/home/jasper/software/apache/openjdk_7u40/openjdk/hotspot/make/linux/Makefile
把所有含有gamma的行註釋掉(即在行首加#)

2、cc1plus: error: the “stabs” debug format cannot be used with
編譯指令換成:
make DEBUG_BINARIES=true all

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章