读书人

在Ubuntu12.04LTS下编译JDK7

发布时间: 2012-12-30 10:43:15 作者: rapoo

在Ubuntu12.04LTS上编译JDK7

1、下载mercurial,源码根目录有个文件README-builds.html,非常详细,可以参考

hg fclone?http://hg.openjdk.java.net/jdk7/jdk7

?

2、要先安装OpenJDK6,记录一下安装的地方,在下面的环境变量里面会用到

我的是/usr/lib/jvm/java-1.6.0-openjdk-amd64/

?

3、安装JDK7所需要的依赖包

sudo apt-get build-dep openjdk-7

?

4、源码中有一个bug,需要修改一下,在编译时发现会与glibc中的一个定义冲突

src/share/vm/runtime/interfaceSupport.hpp:430:0: error: "__LEAF" redefined [-Werror]

/usr/include/x86_64-linux-gnu/sys/cdefs.h:44:0: note: this is the location of the previous definition

http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/a6eef545f1a2

?

5、在编译时会遇到和"javax/sound/jsoundalsa"相关的一个错误,网上搜了一下这个貌似是openjdk的一个bug,有人提供了补丁http://mail.openjdk.java.net/pipermail/build-dev/2012-January/005382.html。只需要修改openjdk/jdk/make/javax/sound/jsoundalsa目录下的Makefile文件,找到LDFLAGS += -lasound?

修改为:OTHER_LDLIBS += -lasound

?

6、设置如下环境变量

?

#!/bin/bash    export LANG=C  export ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk-amd64/export ALLOW_DOWNLOADS=true                                                                                                                    export USE_PRECOMPILED_HEADER=true  export SKIP_DEBUG_BUILD=false  export SKIP_FASTDEBUG_BUILD=true  export DISABLE_HOTSPOT_OS_VERSION_CHECK=true  export DEBUG_NAME=debug  unset CLASSPATH  unset JAVA_HOME             make sanity  && make

?

然后执行了挺长一段时间,就生成了jdk7/build/linux-amd64,察看版本

?

openjdk version "1.7.0-internal-debug"

OpenJDK Runtime Environment (build 1.7.0-internal-debug-wz_2012_12_25_15_46-b00)

OpenJDK 64-Bit Server VM (build 21.0-b17-jvmg, mixed mode)

?

?

参考:

http://lc87624.iteye.com/blog/1542354

http://blog.csdn.net/kindazrael/article/details/7266314

?

?

如果只想单独编译hotspot,可以这样:

bash:~/mercurial/$hg clone http://hg.openjdk.java.net/jdk7/hotspot/hotspot

bash:~/mercurial/$cd hotspot/make

bash:~/mercurial/hotspot/make$LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk/ HOTSPOT_BUILD_JOBS=5 ARCH_DATA_MODEL=64 ALT_OUTPUTDIR=../../build/hotspot_debug make jvmg jvmg1 2>&1 | tee ../../build/hotspot_debug

?

读书人网 >编程

热点推荐