openjdk8最新源码编译及使用(ubuntu16.04)

1、准备环境

sudo apt-get install -y build-essential libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfreetype6-dev libasound2-dev ccache gawk m4 openjdk-7-jdk libasound2-dev  libxrender-dev xorg-dev xutils-dev binutils libmotif-dev ant

如果不能安装的可以先去掉,保证其它模块安装完成。

2、下载源码:

1)下载源码需要使用到hg安装命令:

sudo apt-get install mercurial

官网下载最新源码(速度比较慢,需要几小时不等):

hg clone http://hg.openjdk.java.net/jdk8u jdk8u

更新源码

cd jdk8u_x64_25.71-b00
## 执行权限
sudo chmod 755 get_source.sh
## 更新
./get_source.sh

2)在csdn下载当前最新源码(推荐):

http://download.csdn.net/detail/love254443233/9915397

下载后目录/文件夹重命名为:jdk8u_x64_25.71-b00

3、编写编译脚本build.sh(这是最快的方式)放在源码根目录:

# 语言选项,这个必须设置,否则编译好后会出现一个HashTable的NPE错
export LANG=C

# Bootstrap JDK的安装路径。必须设置。 指向本地jdk的目录。需要比当前版本低,如当前编译版本是jdk8只能配置成jdk7
# jdk6/jdk7 的安装可参考:http://blog.csdn.net/love254443233/article/details/8807600
export ALT_BOOTDIR=/opt/java/jdk1.7.0_79/
export ALT_JDK_IMPORT_PATH=/opt/java/jdk1.7.0_79/

# 允许自动下载依赖
export ALLOW_DOWNLOADS=true

# 并行编译的线程数,设置为和CPU内核(处理器)数量一致即可
export HOTSPOT_BUILD_JOBS=4
export ALT_PARALLEL_COMPILE_JOBS=4

# 比较本次build出来的映像与先前版本的差异。这个对我们来说没有意义,必须设置为false,否则sanity检查会报缺少先前版本JDK的映像。如果有设置dev或者DEV_ONLY=true的话这个不显式设置也行。 
export SKIP_COMPARE_IMAGES=true

# 使用预编译头文件,不加这个编译会更慢一些
export USE_PRECOMPILED_HEADER=true

# 要编译的内容,如果想减少编译时间,可以选择性编译,如把JAXP CORBA CORBA 这3项注释掉
export BUILD_LANGTOOLS=true 
export BUILD_JAXP=true
export BUILD_JAXWS=true 
export BUILD_CORBA=true
export BUILD_HOTSPOT=true 
export BUILD_JDK=true

export DISABLE_HOTSPOT_OS_VERSION_CHECK=ok

# 要编译的版本
#export SKIP_DEBUG_BUILD=false
#export SKIP_FASTDEBUG_BUILD=true
#export DEBUG_NAME=debug

# 把它设置为false可以避开javaws和浏览器Java插件之类的部分的build。 
BUILD_DEPLOY=false

# 把它设置为false就不会build出安装包。因为安装包里有些奇怪的依赖,但即便不build出它也已经能得到完整的JDK映像,所以还是别build它好了。
BUILD_INSTALL=false

# 编译结果所存放的路径
export ALT_OUTPUTDIR=./build/

#这两个环境变量必须去掉,不然会有很诡异的事情发生(我没有具体查过这些“”诡异的事情”,Makefile脚本检查到有这2个变量就会提示警告“)
unset JAVA_HOME
unset CLASSPATH

# 清理原来编译的
make clean
make dist-clean

bash ./configure --with-target-bits=64 --with-debug-level=slowdebug --with-boot-jdk=/opt/java/jdk1.7.0_79/

#make sanity

make all ZIP_DEBUGINFO_FILES=0   2>&1 -d | tee build.log

##cd test && make PRODUCT_HOME=`pwd`/../build/*/images/j2sdk-image all

4、编译
1)执行编译脚本:

cd jdk8u_x64_25.71-b00
./build.sh

若在编译时提示缺少包,则使用提示中的命令安装即可,如:

sudo apt-get install package_name

2)结果:

----- Build times -------
Start 2017-07-30 12:39:29
End   2017-07-30 13:18:32
00:03:53 corba
00:00:24 demos
00:02:30 docs
00:07:11 hotspot
00:02:17 images
00:03:26 jaxp
00:05:15 jaxws
00:13:05 jdk
00:00:37 langtools
00:00:24 nashorn
00:39:03 TOTAL

编译好的文件在放

jdk8u_x64_25.71-b00/build/linux-x86_64-normal-server-slowdebug

验证

jdk8u_x64_25.71-b00/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java -version                                                                                                          
openjdk version "1.8.0-internal-debug"                                                                                                                                                                                                      
OpenJDK Runtime Environment (build 1.8.0-internal-debug-lyh_2017_07_30_12_39-b00)                                                                                                                                                           
OpenJDK 64-Bit Server VM (build 25.71-b00-debug, mixed mode)

5、ide中使用编译好的jdk,classpath添加如下2个路径

jdk8u_x64_25.71-b00/build/linux-x86_64-normal-server-slowdebug/jdk/classes/
jdk8u_x64_25.71-b00/build/linux-x86_64-normal-server-slowdebug/jdk/classes_security/

这里写图片描述

ide中使用jdk的源码路径

jdk8u_x64_25.71-b00/jdk/src/share/classes/

这里写图片描述

注:如果在ide中使用src.zip,调试时会找不到部分package源码,如sun.misc.*

jdk8u_x64_25.71-b00/build/linux-x86_64-normal-server-slowdebug/images/src.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值