Mac下构建编译OpenJDK12

前言:MacOS上构建OpenJDK 12。

前言:部分配图取自《深入理解Java虚拟机》(第三版)。

目录

  • OpenJDK12的环境&编译&调试
    • 1、获取OpenJDK源码
    • 2、构建编译环境
      • 2.1、安装XCode和Command Line Tools for Xcode
        • 2.1.1、方法一
        • 2.1.2、方法二(推荐)
      • 2.2、准备一个JDK11
      • 2.3、安装OpenJDK编译依赖库
        • brew install freetype
        • brew install autoconf
        • brew install ccache
        • 进入源码目录,执行bash ./configure
          • 报错:
          • 解决方式:
          • 问题解决。
        • 看到下图,就说明构建编译环境成功了
    • 3、编译
      • make images
      • 报错:
      • 解决方式:
      • 问题解决。
    • 4、用CLion调试
      • 4.1、将OpenJDK12导入CLion
      • 4.2、修改CMakeLists.txt(可跳过不看)
      • 4.3、调试

OpenJDK12的环境&编译&调试

1、获取OpenJDK源码

1.1、访问https://hg.openjdk.java.net/jdk/jdk12/

1.2、点击“browse”
Mac下构建编译OpenJDK12_第1张图片

1.3、点击“zip”,即可下载到本地,zip大概180M,解压后大概600M。解压后,我重命名为jdk12image-20200529155956562

2、构建编译环境

2.1、安装XCode和Command Line Tools for Xcode

2.1.1、方法一

执行命令xcode-select --install,如果没有提示如下内容,说明本地没有安装,顺着流程安装就行。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1a1Emu5A-1590903095188)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200529154917424.png)]

2.1.2、方法二(推荐)

将macos升级到最新版Mac下构建编译OpenJDK12_第2张图片

访问Apple Developer,下载Mac下构建编译OpenJDK12_第3张图片
在AppStore里下载Mac下构建编译OpenJDK12_第4张图片

2.2、准备一个JDK11

Mac下构建编译OpenJDK12_第5张图片
访问adoptopenjdk,可下载OpenJDK11。外网很慢。

访问huaweicloud,也可下载JDK11。我是用这个下的。记得在bash_profile里配路径。

2.3、安装OpenJDK编译依赖库

brew install freetype

brew install autoconf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9UaM57LT-1590903095190)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530154950378.png)]

Mac下构建编译OpenJDK12_第6张图片

brew install ccache

Mac下构建编译OpenJDK12_第7张图片

进入源码目录,执行bash ./configure

Mac下构建编译OpenJDK12_第8张图片

执行完bash ./configure,可看见目录下自动新增了build文件夹Mac下构建编译OpenJDK12_第9张图片
Mac下构建编译OpenJDK12_第10张图片

报错:
error: No xcodebuild tool and no system framework headers found

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mcItJ17i-1590903095195)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530163823625.png)]

解决方式:

我网上找资料,试了很多方法,最后,我升级了更新了MacOS,重装了xcode,见2.1.2、方法二。

而后执行

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
问题解决。

在执行bash ./configure的时候,可能会有安全警告,在系统偏好设置>>安全与隐私>>通用里允许访问jdk11就行了。

看到下图,就说明构建编译环境成功了


此时build文件夹Mac下构建编译OpenJDK12_第11张图片

3、编译

make images

Mac下构建编译OpenJDK12_第12张图片

报错:

* For target hotspot_variant-server_libjvm_gtest_objs_test_symbolTable.o:
/Users/mac/Desktop/JavaStudy/jdk12/test/hotspot/gtest/classfile/test_symbolTable.cpp:62:6: error: explicitly assigning value of variable of type 'TempNewSymbol' to itself [-Werror,-Wself-assign-overloaded]
  s1 = s1; // self assignment
  ~~ ^ ~~
1 error generated.

解决方式:

找到报错的那行代码,注释掉。而后再make clean,再make images。
Mac下构建编译OpenJDK12_第13张图片
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLc5hgh6-1590903095198)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530234500239.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RToxe6Mr-1590903095198)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530235632825.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lJDBtDXS-1590903095199)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530235900182.png)]

问题解决。

Mac下构建编译OpenJDK12_第14张图片

4、用CLion调试

4.1、将OpenJDK12导入CLion

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eKvIG94f-1590903095201)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200531073010017.png)]
Mac下构建编译OpenJDK12_第15张图片

4.2、修改CMakeLists.txt(可跳过不看)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vZiKOkTZ-1590903095201)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200531073147675.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KDhfhipN-1590903095202)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200531073204591.png)]
可是我在https://github.com/ojdkbuild/ojdkbuild/tree/master/src看到了jdk11、jdk13、jdk14,就是没看到jdk12Mac下构建编译OpenJDK12_第16张图片
于是我把jdk11和jdk13的CMakeLists.txt进行对比,发现不同之处后,我想过复制jdk13的CMakeLists.txt,然后把版本和路径照葫芦画瓢地修改。奈何,我不知道${OJDKBUILD_DIR}是代表什么,也不知道${PROJECT_NAME}_INSTALLER_UPDATE_UUID的值怎么来的。所以我没有修改CMakeLists.txt。讲道理是要修改的,过段时间再看看。

4.3、调试

Mac下构建编译OpenJDK12_第17张图片
Mac下构建编译OpenJDK12_第18张图片
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UU0TdIgL-1590903095211)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200531131701258.png)]
Mac下构建编译OpenJDK12_第19张图片

恭喜,可以开始JVM探索之旅了!

你可能感兴趣的:(JVM,jdk,jvm,java)