Jdk源码分析

文章40 |   阅读 10655 |   点赞0

来源:https://yumbo.blog.csdn.net/category_10384063.html

Ubuntu20.04.1环境编译openjdk15

x33g5p2x  于2021-12-18 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(229)

本来想在windows环境下编译openjdk15,奈何windows非常麻烦,各种依赖需要一个一个找还找不齐,linux上只需要使用命令安装依赖即可,因此选择了ubuntu作为环境。

首先需要有一台Ubuntu主机,我这里使用Vmware安装一台Ubuntu虚拟机
Ubuntu桌面版镜像下载地址:
https://ubuntu.com/download/desktop 到下载页面下载好桌面版的ubuntu即可

然后 通过ubuntu镜像在VMware上创建一台虚拟机

创建完成我们进入主题

一、下载jdk(linux版本的)用于引导源码用

方式一、百度网盘(源码包也在里面方便一次性获取所有文件)

编译的是jdk15,所以下载jdk15的。下面的百度分享连接我提供了多个版本,里面还有源码包
链接: https://pan.baidu.com/s/1OvxsofpbnDp3ihZgq6N1kg 提取码: kxm6

方式二、官网(需要注册一个账号登录即可下载)

oracle官网下载jdk(所有版本)的地址:https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html
选择javaSE15就可以了下载linux版本tar.gz的压缩包

二、源码包openjdk15的下载(网盘中也存了一份)

openjdk12源码包zip文件csdn站内下载
openjdk15源码包zip文件csdn站内下载

将下载好的jdk-15_linux-x64_bin.tar.gz包和jdk15source.zip源码包复制进入ubuntu的文件夹中
例如:我解压的路径是/home/angel/Public下,随便放一个文件夹就行了,不强制要求一致。

都解压后我们开始编译源码
环境是:Ubuntu20.04.1 可能会自带一些依赖先执行后面的命令安装依赖,如果环境不同,可以根据提示安装对应依赖即可

执行下面这条命令安装对应的依赖:下面的依赖是我根据再后面一条命令一个一个得到的,然后写成一条命令一次性安装省得后面麻烦。

sudo apt install -y make build-essential libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev libcups2-dev  libfontconfig1-dev libasound2-dev

执行完后
进入源码包这个位置,下面的configure文件是检查依赖的环节
通过下面这条命令检测依赖,需要加上执行权限sudo chmod +x ./configure
下面–with-boot-jdk的值则是前面下载好的jdk15解压后的主目录bin的父目录

扩展知识点:--with-boot-jdk的由来

设置–with-boot-jdk这是因为OpenJDK由多个部分(HotSpot、JDK类库、JAXWS、JAXP……)构成,其中一 部分(HotSpot)代码使用C、C++编写,而更多的代码则是使用Java语言来实现,因此编译这些Java代 码就需要用到另一个编译期可用的JDK,官方称这个JDK为“Bootstrap JDK”。

其它编译参数的设置:openjdk常用编译参数----摘录《深入理解java虚拟机》第三版

./configure --with-boot-jdk=/home/angel/Public/jdk15

我的jdk15目录如下,这个路径对应上面的–with-boot-jdk等号右边的值

执行./configure --with-boot-jdk=对应jdk15目录后如果正常则会如下提示

得到上面提示后我们输入下面命令进行编译

make

然后等待编译完成,这个时间比较久一点,需要耐心等待

最终我们找一下这个编译后的openjdk
oracle提供的二进制包比较少了一个文件夹legal(法律),以及下面的modules对应 jdk15 的 jmods

openjdk15

jdk15

成功后我们进行验证,进入编译好的bin目录,右键在此打开终端
输入java -version查看信息

相关文章