阿里云Linux Ubuntu 16.04/Linux Ubuntu 14.04下编译OpenJDK8

最近在看深入理解虚拟机,涉及到要编译openjdk8,在下选择是阿里云Linux Ubuntu 16.04.搭建环境。如何下载OpenJDK8的源码以及安装BootstrapJDK1.7就不在这里讲了。这里主要将编译过程及配置。

首先得声明,博主在Linux Ubuntu 16.04下编译open JDK1.8,当配置到最后一步执行./java -version时会报错,错误如下:

这个错误不知道时什么原因,百度谷歌很久都无法解决,这似乎是版本问题,因为当博主使用Linux Ubuntu 14.04来配置编译时,最后一步执行./java -version是成功的。如下图:

 所以如果在Linux Ubuntu 16.04环境下实在无法编译成功,建议可以考虑换成Linux Ubuntu 14.04。阿里云服务器可以更换不同系统,方法可以自行百度,博主就是这样将云服务器的Ubuntu 16.04环境换成Ubuntu 14.04的。

下面是在Linux如何配置编译open JDK1.8,Ubuntu 16.04和Linux Ubuntu 14.04在配置部分操作基本相同。又因为编译的是OpenJDK1.8,所以不用向其他编译jdk1.7一样去设置环境变量。

在阿里云下载好了OpenJDK的源码,安装好了Bootstrap JDK 后,开始编译openJDk。在此之前,先下载安装一些依赖包。命令如下:

sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev
sudo apt-get install libcups2-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install libasound2-dev

编译JDK的环境已经准备好,可以开始进行编译。进入解压后的 OpenJDK8.0 根目录,输入以下命令:

bash configure

但结果Linux还是报错 

原来没有解压工具uzip,需要自己安装 

如果是Ubuntu的的系统可以用下面的命令安装

sudo apt-get install unzip zip

如果是用yum安装的话用下面的命令安装

yum install -y unzip zip;

顺便将网上看到的一段话复制到我的帖子:

一般来说著名的linux系统基本上分两大类:
1 RedHat系列:Redhat、Centos、Fedora等
2 Debian系列:Debian、Ubuntu等
RedHat 系列:
1 常见的安装包格式 rpm 包,安装rpm包的命令是 “rpm -参数”
2 包管理工具 yum
3 支持tar包
Debian系列
1 常见的安装包格式 deb 包,安装deb包的命令是 “dpkg -参数”
2 包管理工具 apt-get
3 支持tar包
所以你Ubuntu不该用yum 该用apt-get

言归正传,回到原来的编译OpenJDK所需依赖配置的问题,安装好unzip后,执行bash configure,依然出现问题:

但是事实上libfreetype6-dev我已经安装了,

 但还是报错,百度了好久,发现都找不到怎么解决,后来谷歌了一下,发现很多外国人都遇到了Ubuntu的这个问题并给出了解决方法,还是谷歌好。执行下面这条命令就可以解决问题:

sudo apt-get install pkg-config

博主除了在Ubuntu 16.04上编译OpenJDK8之外,还在Ubuntu 14.04上编译OpenJDK8,Ubuntu 14.04上的操作基本与Ubuntu 16.04相同,但出现了不同的问题,当配置依赖包时,执行apt-get install libcups2-dev命令时,会出现错误:没有安装libgnutls-dev包,E: Unable to correct problems, you have held broken packages 这也是个挺麻烦的问题,博主找了很多方法都不行,因为安装一个包之前可能要安装很多其他的依赖包,而其他的依赖包又有版本冲突,最后在一篇帖子上找到了解决方法,将原有包删去,强制装上你要的包,帖子链接如下:

https://www.cnblogs.com/Jerryshome/p/4260942.html

最后Linux下的依赖配置完成了,出现内容如下图就可以编译:

 接下来便是进行编译,运行以下命令

sudo make all

遇到错误如下:

解决方法:添加版本支持

vi  hotspot/make/linux/Makefile

进入Makefile文件,找到 SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3%,在后面加上4%,即变成

SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 3% 4%

继续编译,再次执行make all,再次报错。。。,这次的错误是:

recipe for target 'ad_stuff' failed

解决方法:

vi hotspot/make/linux/makefiles/adjust-mflags.sh

进入 adjust-mflags.sh文件,

 找到

找到s/ -([^ ][^ ]*)j/ -\1 -j/,将这一行删掉。

再次编译,这次成功了,编译过程会耗比较长的时间:

 最后一步是验证之后的JDK,执行命令,进入指定目录:

cd  openjdk/build/linux-x86_64-normal-server-release/jdk/bin

 执行./java -version命令,这是在Ubuntu 14.04下的成功截图:

猜你喜欢

转载自blog.csdn.net/qiaoguaping9272/article/details/81743210