获取源码
git clone https://github.com/openjdk/jdk.git
git checkout jdk8-b120 # jdk8分支tag,可自行选择,本次选择的是最后一个版本
配置检查
先给configure文件赋予读写执行权限
sudo chmod 777 configure
执行配置检查,根据提示缺少什么安装什么 sudo apt install xxx
./configure --with-target-bits=64 --with-debug-level=slowdebug
编译
make
遇到的问题处理
- This os not support
解决方法 首先,查看系统版本
uname -r
然后修改文件hotspot/make/linux/Makefile,添加你的版本支持,如下截图
- 编译语法错误
解决方法:修改
hotspot/make/linux/makefiles/adjust-mflags.sh第67行增加一个I.(注意是大写的i, 而不是竖线)
- gcc,g++版本太高导致编译错误
解决方案:降低gcc,g++版本到4.9,如何降低呢,同学可自行百度或者google
本人参考如下方案解决
第一,给apt添加低版本的gcc源,修改/etc/apt/sources.list,添加如下的源
# for gcc 4.* g++ 4.*
deb http://dk.archive.ubuntu.com/ubuntu/ xenial main
deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe
第二,安装低版本的g++,会依赖gcc 第三,切换gcc,g++ 版本
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 40 # 40 是指优先级,数字越大优先级越高
- glibc版本大于等于2.24时,编译warn as error错误修复 先查看系统glibc版本确认下
getconf GNU_LIBC_VERSION
解决方案:修改hotspot/make/linux/makefiles/gcc.make文件中如下配置
# WARNINGS_ARE_ERRORS = -Werror
WARNINGS_ARE_ERRORS = -Wno-all
最终编译成功
参考文档
blog.csdn.net/yanyuan904/…
blog.csdn.net/BlueGrayWat…
www.cxybb.com/article/200…