首先,下载源码,是经过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出了问题后来才发现是这里致使的,这个真的是预先挖号的坑跳进去了 囧~~~在这里抽本身一巴掌~啪!