Linux编译openjdk11源码
Posted 中瑞青城博雅实训部
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux编译openjdk11源码相关的知识,希望对你有一定的参考价值。
本文采用的linux版本为deepin15.10.1桌面版
1、首先下载openjdk11源码和openjdk11
2、下载完成后,将上面现在的文件,进行解压,形成如下的代码结构:
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 禁用将警告当做错误,避免因为警告而中断编译。
执行成功的后:
5、新建shell脚本,对编译前的参数进行配置:
#设置语言
export LANG=C
#Bootstrap JDK的安装路径,必须设置
export ALT_BOOTDIR=/home/wangzhen/Documents/openjdk/jdk11/jdk-11
#允许自动下载依赖
export ALLOW_DOWNLOADING=true
#并行编译的线数,设置和cpu的数量一致即可
export HOTSPOT_BUILD_JOBS=2
export ALT_PARALLEL_COMPILE_JOBS=2
#比较本次build出来的映像与先前版本的差异,这对我们来说没有意义
export SKIP_COMPARE_IMAGES=true
#使用预编译头文件,不加这个编译会更慢一些
export USE_PRECOMPILED_HEADER=true
#指定要编译的内容
export BUILD_LANGTOOLS=true
export BUILD_HOTSPOT=true
export BUILD_JDK=true
export BUILD_JAXP=false
export BUILD_JAXWS=false
export BUILD_CORBA=false
#要编译的版本
#export SKIP_DEBUG_BUILD=false
#export SKIP_FASTDEBUG_BUILD=true
export DEBUG_NAME=debug
#可以避开javaws和浏览器Java插件之类的部分build
BUILD_DEPLOY=false
#设置成false就不会build出包装包,因为包装包里有些奇怪的依赖
#但是即使不build出它也已经能得到完整的JDK映像,所以还是别build它好了
BUILD_INSTALL=false
#编译结果存放的路径
export ALT_OUTPUTDIR=/home/wangzhen/Documents/openjdk/jdk11/build
#卸载环境变量,避免诡异的事情发生
unset JAVA_HOME
unset JRE_HOME
unset CLASSPATH
unset 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
执行成功后:
6、编译后的文件在openjdk/jdk11/openjdk/build/linux-x86_64-normal-server-release/jdk中,进行bin目录,执行 ./java -version,出现如下信息:
出现以上信息证明jdk源码已经编译成功。
这里需要注意一点,Java命令一定要在编译后的bin目录中执行,需要添加java -version前面需要添加./,否则会默认执行你本地配置的jdk。
以上是关于Linux编译openjdk11源码的主要内容,如果未能解决你的问题,请参考以下文章