java写dnf外掛_Linux JDK 编译安装

本文详细介绍了在CentOS 8.2+系统上编译安装JDK15的过程,包括所需的环境、依赖包安装、源码下载、配置与编译步骤。通过指定Bootstrap JDK14,成功创建了一个自定义的、带有调试信息的server版本JDK。编译完成后,JDK将被存放在build目录下,可供进一步使用或打包成镜像。
摘要由CSDN通过智能技术生成

[Linux] JDK 编译安装

概述

我们在java开发时基本会使用Oracle或者一些权威的开源组织提供的JDK,很少使用自己编译的版本.

但是如果你想学习JVM或者自己做一些特殊的用途,自己会编译JDK是有必要学习的.

环境NameVersionArchis requiredCent OS8.2+ LTSX64Yes

Bootstrap JDK14X64Yes

Target JDK15X64Yes,下载

gcc8.3.1X64Yes,下载

make4.2.1X64Yes

本文编译的目标JDK版本为15,他需要的Bootstrap JDK版本为14

JDK源码编译是需要一个叫做Bootstrap JDK的java环境的,因为JDK本身有相当大的一部分是java编写的.

此外一个基本的常识是Bootstrap JDK的版本要是你编译的目标JDK的版本前一个主版本,例如我想编译JDK15那么最佳的Bootstrap JDK是JDK14. 也就是说Target JDK=N,那么N-1是最佳推荐的Bootstrap JDK版本

安装

安装前请按照如下依赖,由于我的系统是CentOS,那么我只记录自己的需要安装的必要的基础依赖

如果你的编译环境不一样,请自行看: https://github.com/openjdk/jdk/blob/master/doc/building.md[root@skyfucker bin]# sudo yum groupinstall "Development Tools" -y

[root@skyfucker bin]# sudo yum install freetype-devel -y

[root@skyfucker bin]# sudo yum install cups-devel -y

[root@skyfucker bin]# sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel -y

[root@skyfucker bin]# sudo yum install alsa-lib-devel -y

[root@skyfucker bin]# sudo yum install libffi-devel -y

[root@skyfucker bin]# sudo yum install libffi-devel -y

[root@skyfucker bin]# dnf install vim gcc gcc-c++ -y

[root@skyfucker bin]# dnf install make -y

[root@skyfucker thinktik]# sudo yum install fontconfig-devel -y

上面的基础依赖安装完成后,下载jdk15的源码然后进行编译[thinktik@skyfucker ~]$ ls

jdk14 jdk-jdk-15-ga.zip openjdk-14.0.2_linux-x64_bin.tar.gz

# 解压源码

[thinktik@skyfucker ~]$ unzip jdk-jdk-15-ga.zip

[thinktik@skyfucker ~]$ ls

jdk14 jdk-jdk-15-ga jdk-jdk-15-ga.zip openjdk-14.0.2_linux-x64_bin.tar.gz

# 进入解压后的文件夹

[thinktik@skyfucker ~]$ cd jdk-jdk-15-ga

[thinktik@skyfucker jdk-jdk-15-ga]$ ls

ADDITIONAL_LICENSE_INFO ASSEMBLY_EXCEPTION bin configure doc LICENSE make Makefile README src test

# 指定为编译server版本debug模式的JDK,并指定Bootstrap JDK的安装路径

[thinktik@skyfucker jdk-jdk-15-ga]$ bash configure --enable-debug --with-jvm-variants=server --enable-debug --with-boot-jdk=/home/thinktik/jdk14/

正常情况下会输出这些提示信息,表示configure检查完成,可以编译

6bba5d5dbe30bb5f8900f2f266caeb27.png

文字信息如下checking for ccache... no

checking if ccache is available... no, ccache binary missing or not executable

checking if ccache is enabled... disabled, default

checking if build directory is on local disk... yes

configure: creating /home/thinktik/jdk-jdk-15-ga/build/linux-x86_64-server-fastdebug/configure-support/config.status

config.status: creating /home/thinktik/jdk-jdk-15-ga/build/linux-x86_64-server-fastdebug/spec.gmk

config.status: creating /home/thinktik/jdk-jdk-15-ga/build/linux-x86_64-server-fastdebug/bootcycle-spec.gmk

config.status: creating /home/thinktik/jdk-jdk-15-ga/build/linux-x86_64-server-fastdebug/buildjdk-spec.gmk

config.status: creating /home/thinktik/jdk-jdk-15-ga/build/linux-x86_64-server-fastdebug/compare.sh

config.status: creating /home/thinktik/jdk-jdk-15-ga/build/linux-x86_64-server-fastdebug/Makefile

====================================================

A new configuration has been successfully created in

/home/thinktik/jdk-jdk-15-ga/build/linux-x86_64-server-fastdebug

using configure arguments '--enable-debug --with-jvm-variants=server --enable-debug --with-boot-jdk=/home/thinktik/jdk14/'.

Configuration summary:

* Debug level: fastdebug

* HS debug level: fastdebug

* JVM variants: server

* JVM features: server: 'aot cds compiler1 compiler2 epsilongc g1gc graal jfr jni-check jvmci jvmti management nmt parallelgc serialgc services shenandoahgc vm-structs zgc'

* OpenJDK target: OS: linux, CPU architecture: x86, address length: 64

* Version string: 15-internal+0-adhoc.thinktik.jdk-jdk-15-ga (15-internal)

Tools summary:

* Boot JDK: openjdk version "14.0.2" 2020-07-14 OpenJDK Runtime Environment (build 14.0.2+12-46) OpenJDK 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing) (at /home/thinktik/jdk14)

* Toolchain: gcc (GNU Compiler Collection)

* C Compiler: Version 8.3.1 (at /usr/bin/gcc)

* C++ Compiler: Version 8.3.1 (at /usr/bin/g++)

Build performance summary:

* Cores to use: 4

* Memory limit: 7809 MB

[thinktik@skyfucker jdk-jdk-15-ga]$

进行编译[thinktik@skyfucker jdk-jdk-15-ga]$ make

耐心等待,当输出如下的内容的时候表示编译正常完成Creating support/modules_libs/jdk.security.auth/libjaas.so from 1 file(s)

Compiling 4 files for BUILD_JIGSAW_TOOLS

Optimizing the exploded image

Stopping sjavac server

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

[thinktik@skyfucker jdk-jdk-15-ga]$ ls

ADDITIONAL_LICENSE_INFO ASSEMBLY_EXCEPTION bin build configure doc LICENSE make Makefile README src test

[thinktik@skyfucker jdk-jdk-15-ga]$ cd build/

[thinktik@skyfucker build]$ ls

编译出的jdk存放在当前文件夹下的build文件夹下,你可以逐级查找并允许编译后的java可执行文件

一般自己编译出的jdk会带上linux的用户名,告诉编译者这是自己编译的版本

5f9e3315c66f77e92eef3cac3f15a79e.png

如果你检查后编译出的程序正常,那么就可以编译为镜像使用了[thinktik@skyfucker jdk-jdk-15-ga]$ make images

存放在images目录下

4b7ff20c98aadf828766c2e12f2a19ad.png

本文原创链接:

参考链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值