Ubuntu18.04 编译 OpenJDK8
前言
OpenJDK 有些组成部分是用 C++ 编写的,更多的代码则是使用 Java 自身实现的,因此编译这些 Java 代码需要用到一个可用的 JDK,官方称它为 Boot JDK。
如果编译 OpenJDK8,Boot JDK 可以是 OpenJDK7,也可以是 OracleJDK7,或者更早的版本。
准备工作
安装 OpenJDK
配置加速器
需要翻墙,不然下载不全;如果不会翻墙,可参考 Docker 编译 OpenJDK8
安装 Mercurial
apt-get install mercurial
用 Mercurial 下载
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u
执行脚本
cd jdk8u &&
bash get_source.sh
构建编译环境
安装 Boot JDK
下载
zulu7.31.0.5-ca-jdk7.0.232-linux_x64.tar.gz
解压缩
tar -zxvf zulu7.31.0.5-ca-jdk7.0.232-linux_x64.tar.gz
改名
mv zulu7.31.0.5-ca-jdk7.0.232-linux_x64.tar.gz jdk7.0.232
配置用户环境变量
vi /etc/profile
添加如下语句
JAVA_HOME=/usr/local/java/jdk7.0.232
JRE_HOME=/usr/local/java/jdk7.0.232
PATH=$PATH:$JRE_HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export JRE_HOME
export PATH
使用户环境变量生效
source /etc/profile
测试是否安装成功
root@ubuntu:/usr/local/jdk8u-dev# java -version
openjdk version "1.7.0_232"
OpenJDK Runtime Environment (Zulu 7.31.0.5-CA-linux64) (build 1.7.0_232-b6)
OpenJDK 64-Bit Server VM (Zulu 7.31.0.5-CA-linux64) (build 24.232-b6, mixed mode)
依赖
安装依赖
apt-get install build-essential unzip zip libx11-dev libxext-dev libxrender-dev \
libxtst-dev libxt-dev libcups2-dev libfontconfig1-dev libasound2-dev libfreetype6-dev
检查依赖
bash configure
====================================================
A new configuration has been successfully created in
/usr/local/jdk8u-dev/build/linux-x86_64-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: 64
Tools summary:
* Boot JDK: openjdk version "1.7.0_232" OpenJDK Runtime Environment (Zulu 7.31.0.5-CA-linux64) (build 1.7.0_232-b6) OpenJDK 64-Bit Server VM (Zulu 7.31.0.5-CA-linux64) (build 24.232-b6, mixed mode) (at /usr/local/java/jdk7.0.232)
* Toolchain: gcc (GNU Compiler Collection)
* C Compiler: Version 7.4.0 (at /usr/bin/gcc)
* C++ Compiler: Version 7.4.0 (at /usr/bin/g++)
Build performance summary:
* Cores to use: 1
* Memory limit: 962 MB
进行编译
make all
参考网址: