mac 编译 openjdk 2020版
环境:
系统:macOS Catalina 10.15.4
Xcode版本: 10.15.2
Mercurial版本:5.2.2-macosx10.14
xcode-select:xcode-select version 2373
背景:
目前开发中用的是jdk1.8的版本,本想下载jdk8的openjdk研究一下,奈何编译过程中出现种种的错误导致编译失败,搞了快整整一天了(其实也就快9个多小时吧),最后失败告终(劝退)。但是总不能就这样算了吧,我直接下载了最新版的openjdk14 [http://hg.openjdk.java.net/jdk/jdk14],越是高版本的openjdk编译通过的几率也越大(编译通过后的jdk14其实也挺香的哈)。
第一步 安装工具
首先要安装一下几个关键工具,错错错错错,首先,带上你的电脑找个比较凉爽的地方,台式机性能不是很棒的尽量开下空调,然后安装一下几个关键工,如果有homebrew的话,会方便很多
brew install mercurial
brew install autoconf
brew install freetype
brew install ccache
# 这个直接命令安装不需要依赖 homebrew
xcode-select install
第二步 下载源码
安装好工具后,就可以开始下载openjdk的源码了,源码的下载方式一共有三种(比较推荐github直接下载,一键就能下载总是比较快乐的)
- 第一种方式是通过mercurial代码管理工具clone下来
在你的pc上找个你喜欢的位置,位置在哪不重要,关键是只要要有5G左右的空间,因为编译完成后的文件夹总空间占用将近4个G。
通过下方这两条命令找到你的文件夹,开始clone代码,直到clone完成,这期间经常会发生不可预料的事情导致下载失败,不建议这个操作,但并不是不能成功,我失败了,但是我的小伙伴却成功了。
cd /myfolder/openjdk/
hg clone http://hg.openjdk.java.net/jdk/jdk14 openjdk14
- 第二种方式是通过浏览器获取,打开web网站[http://hg.openjdk.java.net/],找到你喜欢的那个jdk版本,我喜欢jdk索引里的jdk14版本[http://hg.openjdk.java.net/jdk/jdk14/],打开这个页面。
发现页面上都是看不懂的东西了吧,不知道download在哪了对吧,我也不知道在哪。我们直接找到左侧的"browse"link标签,点击它,可以看到下图的样子。
这就是一级目录的结构,点击进去,可以看到相关的代码,在左侧的"browse"link标签下方找到你想要的格式比如 gz,点击它就可以下载了,直到下载成功为止,下载成功后解压一下(劝退,下载后文件有时候打不开,并不是每次都这样,但浪费了时间总是比较兴心疼的,因为我没有学习"时间管理")
- 第三种方式比较直接了,也是比较熟悉的那个操作。[https://github.com/AdoptOpenJDK/openjdk-jdk14u]直接上github找到你要的版本,我这里使用的是jdk14u的版本,下载成功后解压一下。
除了第一种方式不需要解压外,第二种和第三种方式都需要解压一下下载成功的压缩文件。
然后 cd 进入到解压后的文件夹根目录(第一种方式下载的直接进入下载目录即可)
进入目录后可以ls看下文件目录结构,你喜欢ll查看也行啦,我就举个栗子,看下是否有个文件叫做 configure 的文件,有的话,不要担心,这个文件本来就该有的,没有的话,你可能进错文件夹或者下载错文件了。
第三步 执行configure配置命令
sudo ./configure --with-debug-level=slowdebug --disable-warnings-as-errors
执行这个命令可能或报错提示[sudo: ./configure: command not found],遇到这个错误的话就好说了,下方的两个命令选择一个执行就可以了完美,然后重复上方的命令,如果还是不行的话,我没遇到过,你上隔壁网站搜一下答案。
chmod 777 configure
chmod 755 ./configure
这个过程看情况,pc条件不是太差的一般3分钟以内吧,3分钟以上的也别慌,这个时候你所处的地方比较凉爽,或者空调应该已经让屋内凉爽了,pc扛得住。
完成后你应该会看到这样的提示画面。
然后接着执行make命令,这一步耗时比较久一点,普通pc一般10分钟吧,电脑发热情况比较严重,十分考验室内温度。
第四步 执行make命令编译
sudo make LOG=trace all
静静的等待。。。
喝口水。。。。。
再等一会儿。。。
看下微信。。。。
看下钉钉。。。。
10分钟后你大概会看到这样的界面
界面上没有success字样,不要慌,打开你的根目录,找到build --> macosx-x86_64-server-slowdebug --> jdk --> bin ,确认 bin 文件夹中是否含有 java/javac/javap 等熟悉的文件(是不是有点像 jdk 的安装目录和文件)
找到了就没事,试着执行一下下方的命令,看下你的java version 是否是 openJDK 的版本。
./bin/java -version
不出意外的话,就能看到和我一样的画面。
到这里,openJDK的编译已经告一段落了。
第五步 使用xcode编译
接下来可以开始试着使用xcode编译了。
我们打开xcode,你喜欢(option+空格也行),我就是option+空格也行打开xcode。
打开xcode之后,找到这个create new xcode project,然后依次如图操作。
找到 macOS 的 Command Line Tool ,选中后点击 next
设置项目名称 ,然后点击 next
找到这个默认的文件夹,右键delete,弹出的框中选择 move to Trash,直接丢进回收站(找个时间去清空一下回收站)
然后右键,选择添加文件到当前项目
选择第一步中下载的整个目录的根目录文件夹(第二种或者第三种方法解压出的那个文件夹)
如图设置一下scheme,将Build栏目中默认的openjdk_14删掉
选择Build下方的Run栏目,如图操作,选择other,弹出后接着下图中的操作
选择编译好的openjdk目录中的jdk--> bin --> 目录下的 java 文件
end
到这里,你的项目已经可以跑起来了,开始了一段钻研Hotspot之旅了,加油,骚年!