最近更新|軟件分類(lèi)|軟件專(zhuān)題|軟件排行|手機(jī)版|軟件發(fā)布openjdk8 源碼 最新版
您的位置:首頁(yè)>編程開(kāi)發(fā) > 編程工具>openjdk8 源碼 最新版

openjdk8 源碼 最新版

網(wǎng)友評(píng)分:

相關(guān)軟件

軟件介紹

給大家分享下openjdk8 源碼,編譯OpenJDK8u的源代碼需要先安裝JDK,有需要的可以來(lái)本站下載。

在Ubuntu 12.04 上編譯調(diào)試 OpenJDK8

現(xiàn)在看的資料都是編譯 openjdk7 的,openjdk8好像已經(jīng) openjdk7 編譯方式大一樣,按照前輩的文章使用

make sanity

會(huì)提示找不到 sanity 規(guī)則,然后編譯過(guò)程其實(shí)基本就直接

./configure make all

官方的 README 寫(xiě)的很清楚。

下面記錄下過(guò)程

下載代碼

hg clone http://hg.openjdk.java.net/jdk8u/jdk8u jdk8u cd jdk8u bash ./get_source.sh

然后下載代碼,進(jìn)入代碼目錄:

cd jdk8u

代碼目錄中有一個(gè) README-builds.html 描述了如何 build 整個(gè)系統(tǒng),一些細(xì)節(jié)需要自己去尋找。

安裝依賴(lài)

sudo aptitude build-dep openjdk-7 sudo aptitude install openjdk-7-jdk

配置

環(huán)境變量

export export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"

配置編譯選項(xiàng)

bash ./configure

這樣生成相應(yīng)默認(rèn)配置,如果有需要,比如想編譯出調(diào)試版本的,可以給 configure 加參數(shù)。

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 包,按提示安裝就可以了。從提示可以看出,編譯級(jí)別是 release,另外還有幾種編譯級(jí)別,可以在調(diào)試時(shí)候提供更多的信息。例如:

bash ./configure --enable-debug

這樣會(huì)生成 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

注意編譯的級(jí)別已經(jīng)變成 fastdebug 了。

--enable-debug 其實(shí)相當(dāng)于--with-debug-level=fastdebug, 可以通過(guò)這樣的參數(shù)選項(xiàng)指定編譯級(jí)別。一共可以指定三種級(jí)別: release, fastdebug, slowdebug, slowdebug 含有最豐富的調(diào)試信息,沒(méi)有這些信息,很多執(zhí)行可能被優(yōu)化掉,我們單步執(zhí)行時(shí),可能看不到一些變量的值。所以最好指定slowdebug 為編譯級(jí)別

編譯

編譯直接

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= (or SPEC=)

需要指定使用哪個(gè)編譯配置:

make CONF=linux-x86-normal-server-fastdebug

最后編譯成功后,會(huì)提示:

----- 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/

運(yùn)行可執(zhí)行文件 java

./java -version

會(huì)得到提示

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)

調(diào)試

下面展示一個(gè)啟動(dòng) GDB, 加斷點(diǎn),并運(yùn)行一個(gè) Java 程序的過(guò)程。

$ 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 This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "i686-linux-gnu". For bug reporting instructions, please see: ... Reading symbols from /home/minix/openjdk8/jdk8u/build/fastdebug/jdk/bin/java...done. (gdb) b main Breakpoint 1 at 0x8048410: file /home/minix/openjdk8/jdk8u/jdk/src/share/bin/main.c, line 94. (gdb) r -classpath PossibleReordering Starting program: /home/minix/openjdk8/jdk8u/build/fastdebug/jdk/bin/java -classpath PossibleReordering [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1". Breakpoint 1, main (argc=3, argv=0xbfffeca4) at /home/minix/openjdk8/jdk8u/jdk/src/share/bin/main.c:94

  • 下載地址