centos7编译JDK

参考:

《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) - 周志明》

1.要编译的JDK源码

  方法一:可以通过 一款叫 Mercurial (OpenJDK 的代码版本管理工具,类似于Git)代码版本管理工具从Respository中获取源码

  安装后,执行

hg clone https://hg.openjd.java.net/jdk/jdk12 

  由于访问速度过慢,不推荐使用方法 一

  方法二:直接在OpenJDK的官网上下载打包好的JDK12源码包

  访问地址:http://hg.openjdk.java.net/jdk/jdk12/file/06222165c35f

  在左侧导航栏,找到自己想要的压缩格式,下载后解压到本地

  进入到安装目录,执行

wget http://hg.openjdk.java.net/jdk/jdk12/archive/06222165c35f.tar.gz

  下载完成后,执行

tar -xzvf 06222165c35f.tar.gz

2.安装要编译的JDK的上一个版本JDK(因为编译JDK时要有一个编译期可使用的JDK,官方称作这个JDK叫Bootstrap JDK)

  安装上一版本JDK,这里安装JDK11

  执行  

yum install -y java-11-openjdk-devel

  如果不是管理员 加上 sudo

java -version

  验证是否安装成功

3.安装GCC 版本至少4.8以上, 官方推荐版本7.8 或 CLang 3.2 以上

  由于centos7 默认 GCC 版本为4.8.3,这里做一下升级

  SCL(Software Collections)是为了给RHEL/CentOS 用户提供一种以方便、安全地安装和使用应用程序和运行时环境的多个(而且可能是更新的)版本的方式,同时避免把系统搞乱。与之相对的是第三方源,它们可能会在已安装的包之间引起冲突。

yum install centos-release-scl
yum install devtoolset-7
scl enable devtoolset-7 bash

  同样,不是管理员的话加上 sudo

4.编译JDK

  进入到源码位置,执行

bash configure

  执行失败的话,不要紧,分析报错提示,下载相关依赖,如

  上面提示 sudo yum install alsa-lib-devel

  照跑就是。

到最后,不报任何错误后,执行

make images

开始编译,编译完后,进入到jdk目录下的 ./build/配置名称/jdk 可以看到编译后的文件   (配置名称没有设置的话,会是编译的机器名)

执行

./java -version

可以查看编译后的JDK版本

以上是没有加入任何编译参数的编译方式

关于参数,可以通过 bash configrue --help 查看

下面列出一些常用参数 

--with-debug-level=<level>:设置编译的级别,可选值为release、fastdebug、slowde-bug,越往后进 行的优化措施就越少,带的调试信息就越多。 还有一些虚拟机调试参数必须在特定模式下才可以使 用。默认值为release。

 --enable-debug:等效于--with-debug-level=fastdebug。

 --with-native-debug-symbols=<method>:确定调试符号信息的编译方式,可选值为none、internal、external、zipped。

 --with-version-string=<string>:设置编译JDK的版本号,譬如java-version的输出就会显示该信息。

  这个参数还有--with-version-<part>=<value>的形式,其中part可以是pre、opt、build、major、minor、security、patch之一,用于设置版本号的某一个部分。

 --with-jvm-variants=<variant>[,<variant>...]:编译特定模式(Variants)的HotSpot虚拟机,可以多个模式并存,可选值为server、client、minimal、core、zero、custom。

 

 --with-jvm-features=<feature>[,<feature>...]:针对--with-jvm-variants=custom时的自定义虚拟机特性列表(Features),可以多个特性并存,由于可选值较多,请参见help命令输出。

 

 --with-target-bits=<bits>:指明要编译32位还是64位的Java虚拟机,在64位机器上也可以通过交叉编译生成32位的虚拟机。

 --with-<lib>=<path>:用于指明依赖包的具体路径,通常使用在安装了多个不同版本的BootstrapJDK和依赖包的情况。

  其中lib的可选值包括boot-jd、freetype、cups、x、alsa、libffi、jtreg、libjpeg、giflib、libpng、lcms、zlib。

 --with-extra-<flagtype>=<flags>:用于设定C、C++和Java代码编译时的额外编译器参数,其中flagtype可选值为cflags、cxxflags、ldflags,分别代表C、C++和Java代码的参数。

 --with-conf-name=<name>:指定编译配置名称,OpenJDK支持使用不同的配置进行编译,默认会根据编译的操作系统、指令集架构、调试级别自动生成一个配置名称,

  譬如“linux-x86_64-server-release”,如果在这些信息都相同的情况下保存不同的编译参数配置,就需要使用这个参数来自定义配置名称。

原文地址:https://www.cnblogs.com/Ye-ye/p/12588124.html

时间: 2024-10-04 09:45:00

centos7编译JDK的相关文章

基于Centos7编译spark指定Hadoop版本

基于Centos7编译spark指定Hadoop版本 0 摘要 主要探究了如何对spark源码进行编译,以及普及了一下Maven中的-P,-D的意义以及我在编译过程中遇到的两个坑.为什么需要编译spark源码呢?官网已经提供了预编译的版本了啊,但是如果你对spark源码进行了修改或者spark提供了相对应的hadoop版本不能满足要求,本人编译是因为需要CDH版本的spark,综上所述,最佳实践是对spark源码进行编译. 1 编译前准备 本次选择的版本是spark2.2.0,需要准备spark

自己编译JDK[转]

注:还有问题,还没有成功,哪位能帮忙解答一下 -_-~||| 0.首先,要有耐心,相信会有够折腾的:如果你会提出“为什么要自己做编译JDK这样无聊的事情”这样的问题的话,还是别往下看了,浪费时间啊. 我是参照openjdk的这个文档(README-builds.html)来做的,附件传不上去我就不传了,openjdk里面有. 1.我是再Windows上面编译的,肯定比Linux下要麻烦一些,首先访问到 http://download.java.net/openjdk/jdk7/ 下载openjd

Centos下编译JDK

因为OpenJDK是开源的,这里使用openJDK进行编译联系 环境要求 Centos6.7 64位 openjdk-7u40-fcs-src-b43-26_aug_2013.zip bootstrap JDK:  jdk1.6.0_38 因为我们是编译,所以环境的话可以根据自己的实际情况进行调整,JDK的源码包可以去这个网站进行下载https://jdk7.java.net/source.html boostrap JDK:辅助JDK,意思是我们要编译一个新的JDK时需要别的JDK来辅助完成,

重新编译jdk源码,启用debug信息

我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工作的,于是想调试源码单步执行,然后watch几个关键的变量看看. 刚开始的时候,eclipse里调试模,单步,发现没有办法进入方法内. 用google百度了一下,发现是JRE配置的问题. 使用jre是不可以的,需要使用jdk的环境.(之前真的没有注意到这一点) 于是window->Preferenc

【分享】Linux(Ubuntu)下如何自己编译JDK

最近在看<深入理解 Java 虚拟机>这本书.里面提到了如何手动编译JDK,于是就试了试. 在编译的过程中,遇到了一些问题.上网一搜,发现了一篇很好的文章,跟大家分享一下:ubuntu 13.04环境编译OpenJDK7 虽然文章里说的编译环境是 13.04 ,但笔者在 14.04 的环境下,参考着文章也能成功编译. [分享]Linux(Ubuntu)下如何自己编译JDK

Eclipse修改JDK环境,修改项目编译JDK.

修改Eclipse默认JDK: window     preferences       java     installed JREs       Add..         选择 Standard VM            选择jdk安装目录           finish 修改项目使用JDK环境: 对项目右键       Java build Path         Libraries          选择当前的JDK         remove              Add

CentOS7 编译安装LNMP

LNMP(Linux-Nginx-Mysql-PHP),本文在CentOS7.0上编译LNMP尝尝鲜,全文基本上都是采用手动编译部署...依赖yum帮我安装了GCC和automake..写这个东西耗时有点久了...尼玛 太花时间啦,Linux运维交流群:344177552 主要软件版本: nginx-1.6.0php-5.3.5mysql-5.5.6 yum源配置(其实没什么改动) [[email protected] ~]# cat /etc/yum.repos.d/1.repo [1]nam

YARN环境搭建 之 二:CentOS7.0 JDK配置

Hadoop是Java写的,他无法使用Linux预安装的OpenJDK,因此安装hadoop前需要先安装JDK(1.6以上)   原材料:在Oracle官网下载的32位JDK:     说明: 1.CentOS 7.0系统现在只有64位的,但是,Hadoop一般支持32位的,在64位环境下有事会有Warning出现,避免真的有神马问题,选择i586的JDK(即32位的),当然,64位的CentOS 7 肯定是兼容32位JDK的,记住:64位系统肯定兼容32位的软件,32位系统不能兼容64位软件.

自己动手在Linux下编译JDK

因为决定学习Java虚拟机,所以打算从自己编译JDK开始入手.本文是学习Java虚拟机的第一篇文章,后续会有更多相关文章. 获取源码 本文选择的源码版本为1.7.可以使用如下命令来获取源码: 1)安装Mercurial的最新版本 Mercurial是与Git相似的一个分布式版本控制系统,但使用方法上与Subversion相似.如果你使用过Subversion,很容易迁移到Mercurial.安装命令如下: $ sudo apt-get install python $ sudo apt-get