专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

在ubuntu16下编译openJDK11

为什么需要编译自己的jvm源码?

想象下, 你想看看java线程是如何start的? 去源码里一找 native void start0(), 此时如果你对jvm源码比较熟悉, 那么可以下载openJDK源码借助vscode去查询底层实现, 但如果你不知道呢? 又比如 java高并发编程艺术 一书中说final在构造函数return之前会添加一个StoreStore内存屏障,在初次读取前会添加一个LoadLoad内存屏障, 那么您怎么做? (方法也有, 根据反汇编查找到有个关键字JVM_ACC_FINAL在vscode上查找这个关键字会知道一个叫is_final的方法,借助这个方法可以找到)

ubuntu安装openJDK

  • 安装方式其实很简单, 输入 sudo apt search openjdk 会看到好多openjdk版本, 找到并复制 openjdk-11-jdk
openjdk-11-jdk/focal,now 11.0.7+10-3ubuntu1 amd64 [已安装] OpenJDK Development Kit (JDK)

  • 输入sudo apt install openjdk-11-jdk至此java环境安装完毕
  • 输入java -version验证下自己的java版本吧
  • **(这句代码可以先不执行)**执行命令 sudo apt-get install build-essential 准备下等下需要用到的工具

这里其实有个坑, 我们的ubuntu20默认安装gcc版本过高了, 参考编译文档发现需要低于gcc7.4版本一下

下载openJDK源码编译

下载openJDK

1、 访问网址 openJDK所有版本都有 下载自己想要的openJDK源码

37_1.png完毕之后通过ftp上传到我们的ubuntu

编译openJDK

1、 使用 unzip -q openjdk-11+28_src.zip解压出源码
2、 cd openjdk
3、 执行 bash configure --enable-debug --with-jvm-variants=server (这里我们使用的是默认64bit和fastdebug方式编译jvm) 更多参数可以参考我从 java高并发编程艺术 复制的图片

37_2.png

执行上面那段shell指令后会发现错误, 不要怕看其中这句话: You might be able to fix this by running 'sudo apt-get install autoconf'.

(1) 把sudo apt-get install autoconf -y复制出来在shell上执行下 等待安装完毕, 继续使用 sudo bash configure --enable-debug --with-jvm-variants=server不断的测试 中途可能还会错误几次, 没关系继续copy 比如我又遇到了这个错误

37_3.png看到红框框了指令了么?? 继续复制粘贴 entry (2) sudo apt-get install libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev __ 你们看到的错误可能不一样不要复制我的(都到自己编译jvm的程度了,这点基本功你要会,我就不详述了) __

(3) sudo apt-get install libcups2-dev 有遇到了,执行下, 回去继续做检测指令 (4) sudo apt-get install libfontconfig1-dev (5) sudo apt-get install libasound2-dev

接着我发现全程正常编译完毕…

那么我们可以正式开始编译jvm了

make images -j 4 开始正式编译, 最终会在终端中看到

37_4.png或者

37_5.png都代表编译成功

这里笔者一边看电视剧一边编译的, 没注意到已经编译完成, 认为编译失败, 又make images 编译了一回, 不过没关系, 第二次编译没有clean掉已经编译好的jdk, 所以速度很快

对了编译期间会遇到, 无视就好

  注: 某些输入文件使用或覆盖了已过时的 API。
  注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

至此我们编译完成…

文章永久链接:https://tech.souyunku.com/41856

未经允许不得转载:搜云库技术团队 » 在ubuntu16下编译openJDK11

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们