1. 概述

<<深入理解Java虚拟机--JVM高级特性与最佳实践>>第一章就谈到自己编译jdk,来吧。

2.  编译环境

VMware12

CentOS-7-x86_64-Everything-1611

3. 软件准备

Bootstrap JDK:  jdk-7u79-linux-x64.tar.gz

OpenJDK:  https://jdk7.java.net/source.html

4. 编译依赖

4.1 安装alsa软件包

yum -y install alsa-lib-devel

4.2 安装 cups-devel

yum -y install cups-devel

4.3 安装lib相关库

yum -y install libX*

4.4 安装gcc

yum -y install gcc gcc-c++

4.5 安装freetype

4.5.1 下载 http://rpm.pbone.net/index.php3/stat/4/idpl/26641422/dir/centos_7/com/freetype-2.4.11-9.el7.x86_64.rpm.htm

4.5.2 安装  rpm -ivh freetype-2.4.11-9.el7.x86_64.rpm

4.6 安装ant

yum -y install ant

说明: 这时会将openjdk作为依赖进行安装; 安装完, java -version| ant -version看看

&& 使用ant.tar.gz解压方式安装 不要安装配置jdk依赖

4.7 安装libstdc++

yum -y install libstdc++-static

说明: 此安装为解决编译时出错 ERROR: Cannot chcon libjvm.so

5. 环境变量配置 vim /etc/profile

export CLASSPATH

  export JAVA_HOME

export LANG=C

export ALT_BOOTDIR=/usr/java/jdk1.7.0_76

export ALLOW_DOWNLOADS=true

export USE_PRECOMPILED_HEADER=true

export ARCH_DATA_MODEL=64

export HOTSPOT_BUILD_JOBS=4

export ALT_PARALLEL_COMPILE_JOBS=4

export SKIP_DEBUG_BUILD=false

export SKIP_FASTDEBUG_BUILD=true

export DEBUG_NAME=debug

export ALT_OUTPUTDIR=/usr/java/openjdk/build

6.  编译检查

make sanity

若输出结果为:Sanity check passed,表示设置正确

7.  执行编译

make

8.  编译时可能出现的其他问题

8.1 ./gamma: relocation error: /usr/java/jdk1.7.0_76/jre/lib/amd64/libjava.so:

删除 /usr/java/openjdk/hotspot/make/linux/Makefile文件中 所有test_gamma
            (vim Makefile-> /test_gamma查找->:%s/&& \.\/test_gamma//g替换所有)

8.2  Error: time is more than 10 years from present:

/usr/java/openjdk/jdk/src/share/classes/java/util/CurrencyDate.properties文件中所有时间改为近期

vim 指令   /20..-搜索-> i 修改 -> esc退出i -> n下一个位置 -> i 直到全部改完

8.3  其他

make clean 可以清一下之前编译

9. 结果图

10. debug版jdk

/usr/java/openjdk/build-debug/j2sdk-image下的内容为debug版jdk

删除原有jdk,配置环境变量JAVA_HOME CLASSPATH PATH

查看jdk版本

CentOS 编译 openjdk的更多相关文章

  1. CentOS编译openjdk

    编译openjdk 1. 下载openjdk源码 openjdk的官网是OpenJDK (java.net) 在网站左侧就能看到它的源码位置的链接 从图上可以看到,它的源码在两个位置有托管,Mercu ...

  2. Linux CentOS 6.9 Minimal 编译 OpenJDK 7

    今天学习<深入理解Java虚拟机:JVM高级特性与最佳实践>一书,并动手在Linux系统上编译OpenJDK 7,初次搞不太顺利,特记录下编译操作细节. 一.前期准备 约定:工具默认安装目 ...

  3. JVM学习——编译OpenJDK

    最近在学习<深入理解java虚拟机 第二版>这本书.书中第一部分建议大家自己编译OpenJDK.抱着学习态度也来编译个玩一玩.下面进入正题. 1.编译环境介绍 操作系统 CentOS Li ...

  4. CentOS编译安装NodeJS+Express

    NodeJS是基于Chrome’s Javascript runtime,也就是Google V8引擎执行Javascript的快速构建网络服务及应用的平台,其优点有: 在CentOS编译安装Node ...

  5. Centos编译安装PHP 5.5笔记

    本篇是在 Centos 6.4 32bit 下编译安装 php 5.5.5 的笔记,接上篇 Centos编译安装Apache 2.4.6笔记.php 5.5.x 和 centos 源里面的 php 5 ...

  6. 深入理解JVM(一)编译openJDK

    此文总结的很不错:https://www.cnblogs.com/ACFLOOD/p/5528035.html 准备openJDK源码和环境 1.在linux和macOS上编译openJDK更加友好, ...

  7. 走进JVM之一 自己编译openjdk源码

    想要深入了解JVM,就必须了解其实现机制.了解JVM实现的最好方法便是自己动手编译JDK.好了,让我们开始吧! 1.  准备工作 获取OpenJDK源码 本次编译选择的是OpenJDK7u,官方源码包 ...

  8. Mac上编译OpenJDK过程记录

    编译OpenJDK主要为了学习HotSpot,编译过程在很多相关书籍中都有所涉及,但由于机型.机子具体环境的不同,很难有资料能够一步到位.还是得碰到具体问题通过上网查来一个个解决. 下载OpenJDK ...

  9. CentOS 编译 GCC 7.2

    CentOS 编译 GCC 7.2 下载源码 wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.2.0/gcc-7.2.0. ...

随机推荐

  1. 查看Xcode配置文件

    终端命令 open ~/Library/MobileDevice/Provisioning\ Profiles/ 除去多余的配置文件 Xcode -> Build Settings -> ...

  2. Idea中更改主题后xml配置文件局部黄色背景颜色去除

    相信很多小伙伴和我一样一样的,喜欢更换Idea的主题,但是细心的小伙伴就发现了,每次更改主题后xml配置文件就会局部产生黄色背景颜色,对于强迫症患者真的是够了,网上也有部分文章,但是不够详细,也跟Id ...

  3. 关于JAVA泛型中的通配符类型

    之前对JAVA一知半解时就拿起weiss的数据结构开始看,大部分数据结构实现都是采取通配符的思想,好处不言而喻. 首先建立两个类employee和manager,继承关系如下.其次Pair类是一个简单 ...

  4. 高阶篇:4.1.2.2)产品部件级别的QFDII

    本章目的:介绍产品部件级别的QFDII编写方法. 1.前言 这章接前面总成级别的QFDII. 产品部件级别的QFDII,其实就是将部件QFDII所得到的设计要求,进一步分配给部件其装配层级的零部件中. ...

  5. Codeforces - tag::graphs 大合集 [占坑]

    520B 给定初始n和目标m,存在两种操作\(-1\)和\(×2\),要求最少操作次数 无脑解法是BFS,不能解决稍大的规模 当n>m时,输出n-m 否则逆向处理,转换为m到n的最小操作次数,存 ...

  6. Pycharm+QTDesigner+PyQt5环境配置

    python+PyQt5写界面很方便,记录下个人配置环境过程.... 安装软件: pycharm2017 Qt5.9.6 python3.6.6/python2.7.15 配置PyQt5: pytho ...

  7. jieba和文本词频统计

    ---恢复内容开始--- 一.结巴中文分词涉及到的算法包括: (1) 基于Trie树结构实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG): (2) 采用了动态规划查找最大 ...

  8. Java解析excel文档并以List<T>输出

    /********************************************************工具类start*********************************** ...

  9. 【云计算】pig基础、运行、编写

    会用和用得好是两个概念. 一.pig基础概念 二.pig运行方式 Pig 有两种运行模式: Local 模式和 MapReduce 模式. 本地模式:$pig-x local test.pig Map ...

  10. 带有权重的服务器SLB的实现

    1)参考了网络上的算法,但是那个算法仅仅是用于展示“权重轮循”的意图,在真正的网络下,因为是并行的,所以不可能单纯一个简单的循环可以解决问题. 2)用lock的话性能显然有损失. 3)想了一阵,结合C ...