写点什么

Ubuntu 环境编译 OpenJDK11 源码

作者:程序员欣宸
  • 2022 年 7 月 01 日
  • 本文字数:2365 字

    阅读完需:约 8 分钟

Ubuntu环境编译OpenJDK11源码

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

准备工作

重要文件夹的位置

  • OpenJDK11 源码解压后是个名为 jdk11 的文件夹,位于此目录下:/home/willzhao/work/compileopenjdk

  • OpenJDK10 安装完成后,整体上是个名为 jdk-10 的文件夹,位于此目录下:/usr/lib/jvm,因此 boot JDK 的完整目录是/usr/lib/jvm/jdk-10

  • 以上是我这边的文件路径,如果您和我的不一致也没关系,后面注意修改成您自己对应的即可;

正式开始

  • 编译的时候会用到 boot JDK 的 jre 目录下的 lib 库,我们这里只有 JDK 没有 jre,因此需要创建一个 jre 目录,再把 jdk 的 lib 文件夹复制到这个目录下,执行以下命令:


mkdir /usr/lib/jvm/jdk-10/jre && cp -r /usr/lib/jvm/jdk-10/lib /usr/lib/jvm/jdk-10/jre/
复制代码


  • 我用的是 root 账号,因此将 OpenJDK11 源码文件夹的所有者和用户组都改成 root 的,在目录/home/willzhao/work/compileopenjdk 执行以下命令:


chown -R root jdk11 && chgrp -R root jdk11
复制代码


  • 安装必要的依赖应用:


apt-get install -y autoconf zip libx11-dev libxext-dev libxrender-dev libxtst-dev libxt-dev libcups2-dev libfontconfig1-dev libasound2-dev
复制代码


  • 进入 OpenJDK11 源码的目录 /home/willzhao/work/compileopenjdk/jdk11

  • 配置确认,这一步通过后就可以开始编译了:


bash configure --with-num-cores=4 --with-memory-size=8192
复制代码


  • 以上命令中--with-num-cores=4 表示四核 CPU 参与编译,--with-memory-size=8192 表示 8G 内存参与编译,请您根据自己电脑的实际配置来调整;如果配置不通过会有相关提示,请按照提示内容做调整,步骤 3 中的安装的那些应用其实都是配置检查不通过时提示要安装的;

  • 配置确认通过后,控制台提示信息大致如下:


====================================================A new configuration has been successfully created in/home/willzhao/work/compileopenjdk/jdk11/build/linux-x86_64-normal-server-releaseusing configure arguments '--with-num-cores=4 --with-memory-size=8192'.
Configuration summary:* Debug level: release* HS debug level: product* JVM variants: server* JVM features: server: 'aot cds cmsgc compiler1 compiler2 epsilongc g1gc graal jfr jni-check jvmci jvmti management nmt parallelgc serialgc services vm-structs' * OpenJDK target: OS: linux, CPU architecture: x86, address length: 64* Version string: 11-internal+0-adhoc.root.jdk11 (11-internal)
Tools summary:* Boot JDK: openjdk version "10" 2018-03-20 OpenJDK Runtime Environment 18.3 (build 10+44) OpenJDK 64-Bit Server VM 18.3 (build 10+44, mixed mode) (at /usr/lib/jvm/jdk-10)* Toolchain: gcc (GNU Compiler Collection)* C Compiler: Version 5.4.0 (at /usr/bin/gcc)* C++ Compiler: Version 5.4.0 (at /usr/bin/g++)
Build performance summary:* Cores to use: 4* Memory limit: 8192 MB
复制代码


  • 执行命令 make 即可开始编译,等待编译完成后控制台输出以下类似信息:


Creating support/modules_cmds/jdk.pack/pack200 from 1 file(s)Creating support/modules_cmds/jdk.pack/unpack200 from 7 file(s)Creating support/modules_cmds/jdk.rmic/rmic from 1 file(s)Creating support/modules_cmds/jdk.scripting.nashorn.shell/jjs from 1 file(s)Creating support/modules_libs/jdk.sctp/libsctp.so from 3 file(s)Creating support/modules_libs/jdk.security.auth/libjaas.so from 1 file(s)Compiling 4 files for BUILD_JIGSAW_TOOLSStopping sjavac serverFinished building target 'default (exploded-image)' in configuration 'linux-x86_64-normal-server-release'
复制代码


  • 打开 jdk11/build/linux-x86_64-normal-server-release 目录下的 build.log 文件可以看到更详细的日志:


Creating support/modules_cmds/jdk.pack/unpack200 from 7 file(s)Creating support/modules_cmds/jdk.rmic/rmic from 1 file(s)Creating support/modules_cmds/jdk.scripting.nashorn.shell/jjs from 1 file(s)Creating support/modules_libs/jdk.sctp/libsctp.so from 3 file(s)Creating support/modules_libs/jdk.security.auth/libjaas.so from 1 file(s)Compiling 4 files for BUILD_JIGSAW_TOOLS----- Build times -------Start 2018-10-23 14:45:20End   2018-10-23 14:53:53
00:08:33 TOTAL-------------------------Finished building target 'default (exploded-image)' in configuration 'linux-x86_64-normal-server-release'
复制代码


  • 在 jdk11/build/linux-x86_64-normal-server-release 目录下,有个 jdk 目录,这里面就是最新构建的 OpenJDK,进入里面的 bin 目录,再执行命令./java -version ,可见最新的版本信息如下,已经是 11 版本了:


root@willzhao-Lenovo-Ubuntu16:/home/willzhao/work/compileopenjdk/jdk11/build/linux-x86_64-normal-server-release/jdk/bin# ./java -versionopenjdk version "11-internal" 2018-09-25OpenJDK Runtime Environment (build 11-internal+0-adhoc.root.jdk11)OpenJDK 64-Bit Server VM (build 11-internal+0-adhoc.root.jdk11, mixed mode)
复制代码


  • 至此,基于 OpenJDK11 源码编译构建已经成功,去/etc/profile 文件中做好环境变量设置就能正常使用新的 JDK 了;

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

发布于: 刚刚阅读数: 3
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
Ubuntu环境编译OpenJDK11源码_Java_程序员欣宸_InfoQ写作社区