Linux编译openjdk11源码

Posted 中瑞青城博雅实训部

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux编译openjdk11源码相关的知识,希望对你有一定的参考价值。

本文采用的linux版本为deepin15.10.1桌面版

1、首先下载openjdk11源码和openjdk11

Linux编译openjdk11源码

2、下载完成后,将上面现在的文件,进行解压,形成如下的代码结构:

Linux编译openjdk11源码

3、安装必要依赖

apt-get install -y autoconf zip libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfontconfig1-dev libasound2-dev

4、进入openjdk目录,执行

sudo ./configure --with-boot-jdk=/home/wangzhen/Documents/openjdk/jdk11/jdk-11 --with-num-cores=4 --with-memory-size=8192 --disable-warnings-as-errors 

-with-boot-jdk 替换成自己的jdk11解压目录;

–with-num-cores=4表示四核CPU参与编译;

–with-memory-size=8192表示8G内存参与编译,请您根据自己电脑的实际配置来调整;

--disable-warnings-as-errors 禁用将警告当做错误,避免因为警告而中断编译。

执行成功的后:

Linux编译openjdk11源码

5、新建shell脚本,对编译前的参数进行配置:

#! /bin/bash#设置语言export LANG=C#Bootstrap JDK的安装路径,必须设置export ALT_BOOTDIR=/home/wangzhen/Documents/openjdk/jdk11/jdk-11#允许自动下载依赖export ALLOW_DOWNLOADING=true#并行编译的线数,设置和cpu的数量一致即可export HOTSPOT_BUILD_JOBS=2export ALT_PARALLEL_COMPILE_JOBS=2#比较本次build出来的映像与先前版本的差异,这对我们来说没有意义export SKIP_COMPARE_IMAGES=true#使用预编译头文件,不加这个编译会更慢一些export USE_PRECOMPILED_HEADER=true#指定要编译的内容export BUILD_LANGTOOLS=trueexport BUILD_HOTSPOT=trueexport BUILD_JDK=trueexport BUILD_JAXP=falseexport BUILD_JAXWS=falseexport BUILD_CORBA=false#要编译的版本#export SKIP_DEBUG_BUILD=false#export SKIP_FASTDEBUG_BUILD=trueexport DEBUG_NAME=debug#可以避开javaws和浏览器Java插件之类的部分buildBUILD_DEPLOY=false#设置成false就不会build出包装包,因为包装包里有些奇怪的依赖#但是即使不build出它也已经能得到完整的JDK映像,所以还是别build它好了BUILD_INSTALL=false#编译结果存放的路径export ALT_OUTPUTDIR=/home/wangzhen/Documents/openjdk/jdk11/build#卸载环境变量,避免诡异的事情发生unset JAVA_HOMEunset JRE_HOMEunset CLASSPATHunset JAVA_OPTS
make 2>&1 | tee $ALT_OUTPUTDIR/build.log

这里我将shell脚本的名字命名为build_jdk.sh,赋予执行权限:

chmod +x build_jdk.sh

执行build_jdk.sh脚本

sudo ./build_jdk.sh 

执行成功后:

Linux编译openjdk11源码

6、编译后的文件在openjdk/jdk11/openjdk/build/linux-x86_64-normal-server-release/jdk中,进行bin目录,执行 ./java -version,出现如下信息:

出现以上信息证明jdk源码已经编译成功。


这里需要注意一点,Java命令一定要在编译后的bin目录中执行,需要添加java -version前面需要添加./,否则会默认执行你本地配置的jdk。


以上是关于Linux编译openjdk11源码的主要内容,如果未能解决你的问题,请参考以下文章

LINUX编译OpenJDK11

写 Java 这么久了,你编译过 JDK 源码吗

源码编译OpenJDK 15

MacOS编译OpenJDK源码

JVM OpenJDK1.8源码在Ubuntu16.04下的编译

CentOS 6.9 Minimal 编译OpenJDK 7