JDK版本大全:JDK全称Java Development Kit,它是JAVA的开发工具包,它是一种用于构建在 ...
给大家分享下openjdk8 源码,编译OpenJDK8u的源代码需要先安装JDK,有需要的可以来本站下载。
在Ubuntu 12.04 上编译调试 OpenJDK8
现在看的资料都是编译 openjdk7 的,openjdk8好像已经 openjdk7 编译方式大一样,按照前辈的文章使用
make sanity
会提示找不到 sanity 规则,然后编译过程其实基本就直接
./configure make all
官方的 README 写的很清楚。
下面记录下过程
下载代码
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u jdk8u cd jdk8u bash ./get_source.sh
然后下载代码,进入代码目录:
cd jdk8u
代码目录中有一个 README-builds.html 描述了如何 build 整个系统,一些细节需要自己去寻找。
安装依赖
sudo aptitude build-dep openjdk-7 sudo aptitude install openjdk-7-jdk
配置
环境变量
export export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"
配置编译选项
bash ./configure
这样生成相应默认配置,如果有需要,比如想编译出调试版本的,可以给 configure 加参数。
A new configuration has been successfully created in /home/minix/SourceCode/openjdk8/jdk8u/build/linux-x86-normal-server-release using default settings. Configuration summary: * Debug level: release * JDK variant: normal * JVM variants: server * OpenJDK target: OS: linux, CPU architecture: x86, address length: 32 Tools summary: * Boot JDK: java version "1.7.0_17" Java(TM) SE Runtime Environment (build 1.7.0_17-b02) Java HotSpot(TM) Server VM (build 23.7-b01, mixed mode) (at /home/minix/Software/jdk1.7.0_17) * C Compiler: gcc-4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) version 4.6.3 (at /usr/bin/gcc-4.6) * C++ Compiler: g++-4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) version 4.6.3 (at /usr/bin/g++-4.6) Build performance summary: * Cores to use: 3 * Memory limit: 3878 MB * ccache status: not installed (consider installing) Build performance tip: ccache gives a tremendous speedup for C++ recompilations. You do not have ccache installed. Try installing it. You might be able to fix this by running 'sudo apt-get install ccache'.
可以看出提示缺少 ccache 包,按提示安装就可以了。从提示可以看出,编译级别是 release,另外还有几种编译级别,可以在调试时候提供更多的信息。例如:
bash ./configure --enable-debug
这样会生成 fastdebug 版本的配置信息:
A new configuration has been successfully created in /home/minix/openjdk8/jdk8u/build/linux-x86-normal-server-fastdebug using configure arguments '--enable-debug'. Configuration summary: * Debug level: fastdebug * JDK variant: normal * JVM variants: server * OpenJDK target: OS: linux, CPU architecture: x86, address length: 32 Tools summary: * Boot JDK: java version "1.7.0_17" Java(TM) SE Runtime Environment (build 1.7.0_17-b02) Java HotSpot(TM) Server VM (build 23.7-b01, mixed mode) (at /home/minix/Software/jdk1.7.0_17) * C Compiler: gcc-4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) version 4.6.3 (at /usr/bin/gcc-4.6) * C++ Compiler: g++-4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5) version 4.6.3 (at /usr/bin/g++-4.6) Build performance summary: * Cores to use: 3 * Memory limit: 3878 MB * ccache status: installed and in use
注意编译的级别已经变成 fastdebug 了。
--enable-debug 其实相当于--with-debug-level=fastdebug, 可以通过这样的参数选项指定编译级别。一共可以指定三种级别: release, fastdebug, slowdebug, slowdebug 含有最丰富的调试信息,没有这些信息,很多执行可能被优化掉,我们单步执行时,可能看不到一些变量的值。所以最好指定slowdebug 为编译级别
编译
编译直接
make
就可以了,如果提示
No CONF given, but more than one configuration found in /home/minix/openjdk8/jdk8u//build. Available configurations: * linux-x86-normal-server-fastdebug * linux-x86-normal-server-release Please retry building with CONF=
需要指定使用哪个编译配置:
make CONF=linux-x86-normal-server-fastdebug
最后编译成功后,会提示:
----- Build times ------- Start 2014-08-22 10:56:52 End 2014-08-22 11:16:31 00:00:30 corba 00:13:38 hotspot 00:00:22 jaxp 00:00:30 jaxws 00:04:10 jdk 00:00:29 langtools 00:19:39 TOTAL
查看 build 目录,可以看到 linux-x86-normal-server-fastdebug
切换到 jdk/bin 目录:
cd linux-x86-normal-server-fastdebug/jdk/bin/
运行可执行文件 java
./java -version
会得到提示
openjdk version "1.8.0-internal-fastdebug" OpenJDK Runtime Environment (build 1.8.0-internal-fastdebug-minix_2014_08_22_10_56-b00) OpenJDK Server VM (build 25.40-b05-fastdebug, mixed mode)
调试
下面展示一个启动 GDB, 加断点,并运行一个 Java 程序的过程。
$ gdb java GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later
JDK版本大全:JDK全称Java Development Kit,它是JAVA的开发工具包,它是一种用于构建在 ...