前言:MacOS上构建OpenJDK 12。
前言:部分配图取自《深入理解Java虚拟机》(第三版)。
OpenJDK12的环境&编译&调试
1、获取OpenJDK源码
1.1、访问https://hg.openjdk.java.net/jdk/jdk12/
1.2、点击“browse”

1.3、点击“zip”,即可下载到本地,zip大概180M,解压后大概600M。解压后,我重命名为jdk12
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)]](https://i-blog.csdnimg.cn/blog_migrate/10674105e9cba72cd373352b59fb5eed.png)
2.1.2、方法二(推荐)
将macos升级到最新版
访问Apple Developer,下载
在AppStore里下载
2.2、准备一个JDK11
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xWx96UsS-1590903095189)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530222527953.png)]](https://i-blog.csdnimg.cn/blog_migrate/196bbc561adad3e71cbc585fbcd9f381.png)
访问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)]](https://i-blog.csdnimg.cn/blog_migrate/d8a4275526d1dafc2384ef964e41ce54.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F3XXqF4L-1590903095191)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530155027429.png)]](https://i-blog.csdnimg.cn/blog_migrate/ecb871329cdead1d94afcacf14f3c2d6.png)
brew install ccache
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jlnx099C-1590903095192)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530162853523.png)]](https://i-blog.csdnimg.cn/blog_migrate/1c1f198a49b9e22e60983954790c729b.png)
进入源码目录,执行bash ./configure
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dPTi187C-1590903095193)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530163647400.png)]](https://i-blog.csdnimg.cn/blog_migrate/af7befaf1f0aece1c49593ddaf43b5bd.png)
执行完bash ./configure,可看见目录下自动新增了build文件夹
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wbx4xXhI-1590903095194)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530211225499.png)]](https://i-blog.csdnimg.cn/blog_migrate/415136f3d6a7942194f768e3f79e15e4.png)
报错:
error: No xcodebuild tool and no system framework headers found
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mcItJ17i-1590903095195)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530163823625.png)]](https://i-blog.csdnimg.cn/blog_migrate/5ee3eca103b23723420fdd4254fd0f71.png)
解决方式:
我网上找资料,试了很多方法,最后,我升级了更新了MacOS,重装了xcode,见2.1.2、方法二。
而后执行
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
问题解决。
在执行bash ./configure的时候,可能会有安全警告,在系统偏好设置>>安全与隐私>>通用里允许访问jdk11就行了。
看到下图,就说明构建编译环境成功了
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uAkO2ma7-1590903095195)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530230238625.png)]](https://i-blog.csdnimg.cn/blog_migrate/708e7329690f987d4e34b697453e55b2.png)
此时build文件夹![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PP3URrYu-1590903095196)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530231129207.png)]](https://i-blog.csdnimg.cn/blog_migrate/2f9424330e6b6d4d26d8b9df18a03301.png)
3、编译
make images
报错:
* 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.
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U1YQGD8I-1590903095197)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530232650013.png)]](https://i-blog.csdnimg.cn/blog_migrate/a53c42f58f1b51be9e303cefd09ce659.png)
解决方式:
找到报错的那行代码,注释掉。而后再make clean,再make images。

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLc5hgh6-1590903095198)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530234500239.png)]](https://i-blog.csdnimg.cn/blog_migrate/7f83d8e5e2c012f17d9d1c8656b0d4b4.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RToxe6Mr-1590903095198)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530235632825.png)]](https://i-blog.csdnimg.cn/blog_migrate/54e65270f1865dae99afeab15ee98952.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lJDBtDXS-1590903095199)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200530235900182.png)]](https://i-blog.csdnimg.cn/blog_migrate/78d4e7500687e6d8933865655a2db195.png)
问题解决。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vj4dp7iX-1590903095200)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200531000836781.png)]](https://i-blog.csdnimg.cn/blog_migrate/ee9d9f0ddb131ecaced5d15fb8227e12.png)
4、用CLion调试
4.1、将OpenJDK12导入CLion
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eKvIG94f-1590903095201)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200531073010017.png)]](https://i-blog.csdnimg.cn/blog_migrate/4515d62e7ffb3274b27efbac79944caa.png)

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

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UU0TdIgL-1590903095211)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200531131701258.png)]](https://i-blog.csdnimg.cn/blog_migrate/e5079f16f9cb527a1421ca6bb8ce0a77.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aJpgayK7-1590903095211)(/Users/mac/Documents/csdn草稿/JVM/OpenJDK的编译环境&编译/image-20200531131949652.png)]](https://i-blog.csdnimg.cn/blog_migrate/5137921bde92c7f31b9c555b693c1771.png)
恭喜,可以开始JVM探索之旅了!
本文介绍了如何在MacOS上构建和编译OpenJDK12,包括获取源码、安装XCode和Command Line Tools、准备JDK11、安装依赖库、解决编译过程中遇到的问题以及使用CLion进行调试的步骤。
1586

被折叠的 条评论
为什么被折叠?



