专栏首页指缝阳光(1)JVM——在 Ubuntu 上手动编译 OpenJdk12

(1)JVM——在 Ubuntu 上手动编译 OpenJdk12

一、简述

  1. 介绍:最近开始看《深入理解Java虚拟机第三版》,为了自己以后能方便回忆,以及加深理解,特写文章以记之。本篇博客主要是实现使用在 Ubuntu 系统上自己编译 OpenJdk,在后面的学习中会用到。

二、准备工作

  1. 安装 Ubuntu 操作系统:我是在 windows 系统上使用 VMware 安装了 Ubuntu 18.04.3 LTS 。这个安装就不介绍了,网上能搜到很多文章,此处贴一个博客地址是首次安装后,实现 root 用户登录以及 ssh 访问:解决Ubuntu18.04不能用Xshell使用root用户登录。我的虚拟机配置如下:
  1. 下载 OpenJdk12 源码:可以网上搜索,我就直接贴出我的百度云分享:https://pan.baidu.com/s/1Y12ba3RTzWxt8C9wvNcjPQ 提取码:xk6r
  2. 安装第三方库:编译过程中需要使用 GCC、FreeType、CUPS等,包括编译 OpenJdk 版本的上一个版本(因为源码有些是 Java 代码写的,需要 jdk 来编译),此处是安装 OpenJdk11。具体的安装内容如下

三、进行编译

  1. 上传 OpenJdk12 源码:下载得到的源码是 zip 包,可以通过 Xftp 等工具上传到 Ubuntu 系统上。因为要解压压缩包,因此需要安装 unzip 工具,同时需要安装 zip 工具(如果不安 zip ,在编译检查时会报缺失如下图)

安装命令如下:# 安装 apt-get install zip unzip # 解压文件 unzip xxxxx.zip

  1. 编译检查及配置:进入解压后的源码目录,如下图。

// 编译FastDebug版,仅含Server模式的HotSpot虚拟机 bash configure --enable-debug --with-jvm-variants=server 如果检查有缺失的项目,会进行提示,并给出解决安装的命令,只需要直接使用就行。我在检查时报了如下的缺失

此时按提示执行命令即可。当执行检查成功时,可以看到下图成功的显示

  1. 执行编译:此时我执行的是 “make all” 命令,即编译了 product、docs、test。此处的 make 有好几种选择可以自行查询。特别注意:如果多次编译,或者目录结构成功产生后又再次修改了配置,必须先使用 “make clean” 和 “make dist-clean” 命令清理目录,才能确保新的配置生效。# 编译 make all 该命令执行后大约要等 20 分钟左右,成功后如下图
  1. 验证:此时进入源码目录下的 build/OpenJdk配置名称/jdk ,可以看到编译完成后的 jdk 结果,此处的内容可以直接复制出来使用,就是一个完整的 jdk。目录如下图:

进入 bin 目录,执行如下的查看版本命令:./java -version 可以看到我们编译的 OpenJdk 版本信息

到此我们手动编译 OpenJdk 就完成了,后面文章将会介绍调试源码。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 编译,调试JVM过程中的各种问题(血泪史)

    com.jetbrains.cidr.execution.debugger.backend.gdb.GDBDriver$GDBCommandException:...

    执生
  • 整个国庆假期总算整理好了全网最新最简单的 OpenJDK13 代码编译

    最近因写文章需要查看 JVM 源码,有时代码逻辑不是很清晰,找半天,趁国庆假期,抽空下载了 OpenJDK13 搭建了 JVM debug 环境,把操作记录写在...

    java架构师
  • Ubuntu 18.04.1下源码编译安装OpenJDK8

    自己编译个JDK来提升对JVM的兴趣。本文分三部分来描述编译OpenJDK的过程,分别是编译前准备工作、构建编译环境、进行编译,在这三部分内容中顺带把趟的坑一起...

    yaphetsfang
  • JVM 开发者必看:傻瓜式编译 OpenJDK 7

    LZ经过一个星期断断续续的研究,终于成功的搞定了JDK的成功编译与调试。尽管网络上的教程也有不少,包括源码中也有自带的编译步骤说明,但真正自己动手的话,还是会遇...

    哲洛不闹
  • 不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!

    第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环。在这部分内容中,我会解释静态链接和动态链接的区别,它们对...

    米开朗基杨
  • 编译VisualVM源码解决乱码问题

    今天在使用VisualVM对测试服务器进行JVM监控的时候,发现所有统计图的横纵坐标都是显示乱码(小方块),即使我的Ubuntu系统使用的是英文语言环境.奇怪的...

    编程随笔
  • Ubuntu环境编辑OpenJDK11源码

    版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boli...

    程序员欣宸
  • 编译和调试openjdk8

    IDE:Netbeans 8.2(最新版本即可) 操作系统:Ubuntu 14.04 (内核3.13.0) make版本:3.81 源代码:OpenJDK 8

    yaphetsfang
  • docker:(3)docker容器挂载宿主主机目录

    有一项重要的参数 -v 目录挂载,就是让容器内部目录和宿主主机目录关联起来,这样就可以直接操作宿主主机目录而不用再操作具体容器了

    肖哥哥
  • docker:(2)通过Dockerfile构建镜像并发布web项目

    上一篇讲解了docker的基本使用 http://www.cnblogs.com/xiaochangwei/p/8204511.html

    肖哥哥
  • Kotlin简介

    Kotlin是JetBrains开发的针对JVM、Android 和浏览器的静态编程语言。

    三产
  • 手把手教你使用 Prometheus 监控 JVM

    roc,腾讯高级工程师,Kubernetes Contributor,热爱开源,专注云原生领域。目前主要负责腾讯云TKE 的售中、售后的技术支持,根据客户需求...

    腾讯云原生
  • Clojure 学习入门(2)—— eclipse 插件

    以前听说过LISP函数式编程,也听人说Erlang的牛逼,接触了Clojure才知道,原来Clojure就是JVM中的Erlang。网上基于Ubuntu环境下开...

    阳光岛主
  • 16 岁高中生成功在 iPhone 7 上安装 Ubuntu 20.04 桌面!

    近日,国外一名 16 岁的开发者发布了一则视频,展示自己为一台已经无法正常使用的 iPhone 7 成功移植了 Ubuntu 20.04,并将其作为服务器来使用...

    米开朗基杨
  • 如何在Ubuntu 14.04上使用Nginx安装HHVM

    HHVM是一个用于执行PHP和Hack代码的开源虚拟机。HHVM由Facebook开发和支持,这一事实最近引起了越来越多的人们对HHVM的关注。

    木纸鸢
  • JVM的入门知识

    前言:巴拉巴拉,今天给大家分享一点java三剑客(jre,jvm,jdk)中的jvm,纯理论教科书篇。 非原创,里面摘取了多个博客里面的内容

    王念博客
  • JVM知识点总览:高级Java工程师面试必备

    程序员,就是“一人,一键,二机”行走其间的孤独剑客。我们游走代码江湖,弹指间,便可掀起一场风雨变革。而在江湖中狂荡,必然要练就绝世武功,则需要内外兼备:精妙的招...

    谭庆波
  • Python基础

    Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

    用户7678152
  • 简单几步!Windows下Clion结合docker调试openjdk8源码

    原理是通过Docker编译openjdk,然后结合clion通过gdbserver远程调试

    DH镔

扫码关注云+社区

领取腾讯云代金券