Centos7 下编译 Openjdk8

本文主要介绍如何在 Centos7 下编译 Openjdk8 源码,《深入理解java虚拟机》第二版网上好多 openjdk7 的帖子,编译 jdk8 和 7 还是有些差别的,比如大家经常提到的 make sanity 在 jdk8 源码里是没有的,下面我们一步步编译 openjdk8。

1 安装Bootstrap JDK

这里完全按照官方的说明来的。

1
yum install java-1.8.0-openjdk

然后 java -version 看下已安装的 jdk 版本,确实是 1.8.0 哈

1234
[[email protected] ~]# java -versionopenjdk version "1.8.0_141"OpenJDK Runtime Environment (build 1.8.0_141-b16)OpenJDK 64-Bit Server VM (build 25.141-b16, mixed mode)

2 下载openjdk1.8源码

首先安装 hd yum install hg,接着开始下载源码,网络不好的话,这个下载会特别慢!

123
hg clone http://hg.openjdk.java.net/jdk8u/jdk8u openjdk8cd openjdk8sh get_source.sh

3 安装依赖

1
yum install alsa-lib-devel cups-devel libX* gcc gcc-c++ freetype-devel libstdc++-static ant make

4 编译配置

切换到 openjdk8 目录

12
chmod +x configure./configure --enable-debug

5 编译

直接在openjdk8下执行make,控制台提示

[[email protected] openjdk8]# make
No CONF given, but more than one configuration found in /app/openjdk8//build.
Available configurations:
* linux-x86_64-normal-server-fastdebug
* linux-x86_64-normal-server-release
Please retry building with CONF=<config pattern> (or SPEC=<specfile>)
Makefile:55: *** Cannot continue.  Stop.

我们只需要安装提示重新 make CONF=linux-x86_64-normal-server-fastdebug 就行了, make 过程比较费时间,可能提出类似如下错误提示

[[email protected] openjdk8]# make
[Error] encoded value was less than 0: encode(-8.326673E-17, 5.0, 11.0, 16.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was greater than 3: encode(15.029411, 1.0, 14.0, 15.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)
[Error] encoded value was greater than 3: encode(15.029411, 1.0, 14.0, 15.0)
[Error] encoded value was less than 0: encode(-0.05882353, 1.0, 24.0, 25.0)

刚开始吓了一跳,网上搜了下,这是个 bughttps://bugs.openjdk.java.net/browse/JDK-8016451 ,最后编译成功会看到控制台提示

## Finished jdk (build time 00:03:56)

----- Build times -------
Start 2017-09-04 11:46:36
End   2017-09-04 12:02:25
00:00:31 corba
00:09:53 hotspot
00:00:21 jaxp
00:00:29 jaxws
00:03:56 jdk
00:00:38 langtools
00:15:49 TOTAL
-------------------------
Finished building OpenJDK for target ‘default‘

我们再看下这个jdk的版本,果然和系统环境变量的不是一个哈

[[email protected] openjdk8]# build/linux-x86_64-normal-server-fastdebug/jdk/bin/java -version
openjdk version "1.8.0-internal-fastdebug"
OpenJDK Runtime Environment (build 1.8.0-internal-fastdebug-_2017_09_04_11_45-b00)
OpenJDK 64-Bit Server VM (build 25.71-b00-fastdebug, mixed mode)

6 代码验证

我们写一段简单的 java 代码分别在两个 jdk 上编译 javac 并运行 java 以获取两个 jdk 的信息,代码如下

[[email protected] ~]# cat JvmTest.java
public class JvmTest {
 public static void main(String[] args) {
  System.out.println(System.getProperty("user.home"));
  System.out.println(System.getProperty("java.version"));
  System.out.println(System.getProperty("os.name"));
  System.out.println(System.getProperty("java.vendor.url"));
 }
}
  • 使用已安装jdk
[[email protected] ~]# javac JvmTest.java
[[email protected] ~]# java JvmTest
/root
1.8.0_141
Linux
http://java.oracle.com/
  • 使用自编译jdk
[[email protected] ~]# openjdk8/build/linux-x86_64-normal-server-fastdebug/jdk/bin/javac JvmTest.java
[[email protected] ~]# openjdk8/build/linux-x86_64-normal-server-fastdebug/jdk/bin/java JvmTest
/root
1.8.0-internal-fastdebug
Linux
http://java.oracle.com/

原文地址:https://www.cnblogs.com/alone-striver/p/8996394.html

时间: 2024-08-29 08:14:08

Centos7 下编译 Openjdk8的相关文章

[转]CentOS7下编译openjdk

CentOS7下编译openjdk 编译环境: 操作系统: CentOS7 64位 BootStrap JDK: 1.7.0_76 1. 下载openjdk源码 下载openjdk1.7源码 openjdk-7u40-fcs-src-b43-26_aug_2013.zip 2. 安装编译环境 安装alsa包 yum install alsa-lib-devel 安装cups-devel yum install cups-devel 安装X相关的库 yum install libX* 安装g++

JAVA虚拟机学习笔记(一)Windows10下编译OpenJDK8

转载请注明源地址:http://www.cnblogs.com/lighten/p/5906359.html 1. 编译环境的准备 1.1 JDK源码下载 OpenJDK是JAVA发展史中的一个开源项目,本文以OpenJDK8为例进行编译.OpenJDK的官网为:http://openjdk.java.net/,直接访问http://openjdk.java.net/install/index.html进入主要界面.左侧有一系列的,找到Source code列表,其提供了两种形式的下载:Merc

JVM-Ubuntu18.04.1下编译OpenJDK8

近期开始学习JVM,看的是周老师的<深入理解Java虚拟机>,打算先自己编译个JDK来提升对JVM的兴趣.本文分三部分来描述编译OpenJDK的过程,分别是编译前准备工作.构建编译环境.进行编译,在这三部分内容中顺带把趟的坑一起说明下. 一.编译前准备工作 1.1 安装Linux环境 编译OpenJDK,Windows环境要比Linux环境复杂,故选择安装Linux环境.可以自己在Windows下安装虚拟机,也可以直接安装双系统,专门空出一个磁盘来安装Linux,我选择了后者,安装最新版的Ub

centos7下编译安装nginx并实现日志轮替

centos7编译安装nginx: 首先确保系统上存在编译安装使用的必要工具运行:  # yum groupinstall "development tools" "server platform development" 1 下载PCRE version 4.4 - 8.40 (ngx_http_rewrite_module模块需要)    # wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/p

centos7下编译安装lnmp和nginx代理实验

1.先安装mysql cd /usr/local/src wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql cd /usr/local/mysql useradd

CentOS7下编译Hadoop

准备工作 下载 Hadoop 源码 Source (当前最新 2.9.2) https://hadoop.apache.org/releases.html 打开压缩包会看到 BUILDING.txt 文件,这是官方提供的编译说明,参看 Linux 部分 Requirements: * Unix System * JDK 1.7 or 1.8 * Maven 3.0 or later * Findbugs 1.3.9 (if running findbugs) * ProtocolBuffer 2

Windows 10 下编译 OpenJDK8

只是编译,不调试. 一.安装 Cygwin 32 位和 64 位都可以试试. https://cygwin.com/install.html 把这些装上(https://hg.openjdk.java.net/jdk8u/jdk8u/raw-file/tip/README-builds.html) 二.下载源码(OpenJDK8) https://www.mercurial-scm.org/downloads # 下载源码,目标目录需要为空 hg clone http://hg.openjdk.

CentOS7下编译安装Python3.7.x【亲测有效】

所有操作都在root用户下操作 下载安装包 编译安装 建立软链接 验证 安装: 更新yum: yum update 安装Python依赖: yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel zlib-devel ncurses-devel tk-devel libffi-devel gcc make 下载python安装包: 这是安装的是Python3.7.4 由于可能

Centos7下编译安装python2.7.10

先安装必要的软件包  yum -y install openssl openssl-devel ncurses-devel.x86_64  bzip2-devel sqlite-devel python-devel zlib zlib-devel 2.下载 python2.7.10源码包 wget  mkdir -pv /usr/local/python/2.7.10/lib  tar zxvf Python-2.7.10.tgz cd Python-2.7.10/ ./configure --