Ubuntu16.04虚拟机编译openJDK9

2018-01-29  本文已影响0人  会飞的毯子

配置虚拟机环境在此就不在多说,相信各位肯定都会,但有一个坑:虚拟机的内存必须设置的大一点(至少设置为2G,不然编译的时候会报错)。我的虚拟机配置如下:


虚拟机配置

如果虚拟机准备好了,那么就进行下一步。

获取JDK有两种方式,先说简单的吧:

1、github

直接使用Github上的源代码镜像
$ git clone https://github.com/dmlloyd/openjdk

2、通过Mercurial代码管理工具下载

首先下载Mercurial管理工具,运行:
$ apt-get install mercurial
然后去OpenJDK官网:OpenJDK Mercurial Repositories
找到如下:

要下载的JDK
记住地址,随后执行:
$ hg clone http://hg.openjdk.java.net/jdk9/jdk9/
下载完成后,进入下载的文件夹,里面有一个get_source.sh
赋予可执行权限并执行
$ chmod +x get_source.sh 
$ ./get_source.sh

耐心等待,下载完成的文件夹长这样


下载完成的文件
configue

在构建之前建议仔细阅读源代码目录下的 README-builds.html or README-builds.md 文件
在阅读的过程中发现编译JDK需要指定一个Bootstrap JDK,因为OpenJDK的各个组成部分有的是用C++编写的,更多的代码则是使用Java自身实现的。所以需要去JDK官网下载一份JDK:Java SE - Downloads | Oracle Technology Network | Oracle
下载并解压完成后不建议指定JAVA_HOMECLASSPATH,
如果设置了环境变量,可以取消:

unset JAVA_HOME
unset CLASSPATH

回到OpenJDK目录下,执行:

$ chmod +x configure
$ sudo ./configure --with-boot-jdk=解压后的oracleJDK路径

在执行过程中会报缺少环境的错误,按照系统给出的提示进行安装就好
configure完成后会输出:

Configuration summary:
* Debug level:    release
* HS debug level: product
* JDK variant:    normal
* JVM variants:   server
* OpenJDK target: OS: linux, CPU architecture: x86, address length: 64
* Version string: 10-internal+0-adhoc.root.openjdk (10-internal)

Tools summary:
* Boot JDK:       java version "9.0.4" Java(TM) SE Runtime Environment (build 9.0.4+11) Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)  
* Toolchain:      gcc (GNU Compiler Collection)
* C Compiler:     Version 5.4.0 (at /usr/bin/gcc)
* C++ Compiler:   Version 5.4.0 (at /usr/bin/g++)

Build performance summary:
* Cores to use:   1
* Memory limit:   1970 MB
make

随后执行make
耐心等待后将输出:

Finished building target 'default (exploded-image)' in configuration 
'linux-x86_64-normal-server-release'

此时在OpenJDK的目录下的build子目录下将产生一个linux-x86_64-normal-server-release文件夹

验证

进入到生成的文件夹下的jdk/bin目录下,执行./java -version
将输出

openjdk version "10-internal" 2018-03-20
OpenJDK Runtime Environment (build 10-internal+0-adhoc.root.openjdk)
OpenJDK 64-Bit Server VM (build 10-internal+0-adhoc.root.openjdk, mixed mode)

至此说明我们编译JDK成功。

上一篇下一篇

猜你喜欢

热点阅读