openjdk 打包編譯問題

首先,下載源碼,是經過mercurial 下載 具體下載命令能夠參看 http://openjdk.java.net/projects/jdk7u/ 這裏java

經過hg clone 下載linux

我下載的版本是openjdk-7u75-src-b13,這個版本可能不是一個穩定版本 但只要能經過編譯,測試無誤就能夠使用,固然之其中也有一些代碼修改,和業務相關的shell

以後是環境準備apache

freetype要高於2.2 版本工具

打包用的JDK 我用的版本是 jdk1.7.0_72測試

ant 用的版本是1.9.4 大於1.7.0便可ui

其餘的工具 能夠視打包環境打包過程會自動提示spa

打包機:.net

Linux 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linuxget


過程當中遇到的問題:

在寫本身的makefile的時候 寫錯了jdk的版本 足足折騰了兩天 真的很奇葩啊,

makefile裏 JAVA_HOME   = $(shell echo /usr/local/jdk1.7.0_72) 這裏的jdk漏掉了,直接反映的結果在 make sanity的時候報ant的版本低於1.7.1 這個真的很囧啊後來跟進去看才發現

在openjdk/jdk/make/common/shared/Sanity.gmk 文件中定義的獲取命令是這樣的 

_ANT_VER:=$(shell $(ANT) -version 2>&1 )

ANT_VER:=$(call GetVersion,"$(_ANT_VER)")

在查找$(ANT)值 和 GetVersion的具體實現後發現

$(ANT) = PTS=-Djava.io.tmpdir=/data0/zhangyun/_build/openjdk/build/linux-amd64/tmp JAVA_HOME=/usr/local/jdk1.7.0_72 /usr/local/apache-ant-1.9.4/bin/ant -version

GetVersion具體方法在openjdk/jdk/make/common/shared/Defs.gmk

# Given a line of text, get the version number from it

define GetVersion

$(shell echo $1 | sed -e 's@[^0-9]*\([0-9][0-9]*\.[0-9][.0-9]*\).*@\1@' )

endef


開始沒有發現這裏的少了東西,直接致使執行的結果以下

Error: JAVA_HOME is not defined correctly.

  We cannot execute /usr/local/1.7.0_72/bin/java


在看上面 GetVersion的執行過程 將這個輸入帶入GetVersion的輸入 執行結果

# echo 'Error: JAVA_HOME is not defined correctly.We cannot execute /usr/local/1.7.0_72/bin/java' | sed -e 's@[^0-9]*\([0-9][0-9]*\.[0-9][.0-9]*\).*@\1@' 

1.7.0

我一直覺得個人ant出了問題後來才發現是這裏致使的,這個真的是預先挖號的坑跳進去了 囧~~~在這裏抽本身一巴掌~啪!

相關文章
相關標籤/搜索