Centos7编译openjdk8

安装jre

sudo yum install java-1.8.0-openjdk

安装jdk

sudo yum install java-1.8.0-openjdk-devel

安装成功后:

[root@izuf6ea4rfo45y44oj74jhz /]# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@izuf6ea4rfo45y44oj74jhz /]# javac -version
javac 1.8.0_191

安装mercurial

hg是下载openjdk的源码要用的工具

yum install hg

下载openjdk8的源码

这步下载很麻烦,如果你网速很慢,那就要很久很久(建议:如果网速不行,就到网速好的地方,要不然会疯掉)

hg clone http://hg.openjdk.java.net/jdk8u/jdk8u openjdk8
#进入opnjdk8文件夹
sh get_source.sh

注意:你以为那个get_source.sh会成功把所有的源码都拉下来,我搞了好久都没拉全。需要执行很多次;至少下面的那个jdk我就好久才拉下来。


openjdk文件夹.png

安装依赖插件

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

说明:到了这步其实依赖的东西很多,你一时无法找全,到下一步执行configure命令配置提示再去完善也可以,很舒服。

编译配置

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

说明:首先需要加上执行权限,你拉下来的源代码中configure文件是没有执行的权限的。然后你执行configure文件会出现提示你安装依赖插件,譬如:



只需要把后面拷贝下来执行安装,然后再执行configure文件,直到:



说明:红框中的警告就是让你clean下目录,让新配置覆盖旧的配置。

编译

make

说明:我直接执行make文件,并没有成功,出现错误。

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

解决办法:make文件执行的时候,将配置也一起带上作为参数。

make CONF=linux-x86_64-normal-server-fastdebug

编译成功

HelloWorld

public class HelloWorld {

        public static void main(String[] args) {
                System.out.println("HelloWorld openJDK");
        }
}

源码JDK运行:

[root@izuf6ea4rfo45y44oj74jhz workspace]# ../build/linux-x86_64-normal-server-fastdebug/jdk/bin/java HelloWorld       
HelloWorld openJDK

已安装的运行:

[root@izuf6ea4rfo45y44oj74jhz workspace]# java HelloWorld
HelloWorld openJDK

给自己的话

之前看了很多java虚拟机相关的书,但是始终印象不深,感觉像在背理论,而且我也不知道他说的对不对,终于可以编译openjdk了,后面的很多任务,主要就是通过实践去验证总结了。当下只是刚刚迈出的第一步。

你可能感兴趣的:(Centos7编译openjdk8)