macOS:Sierra,10.12.6html
處理器:2.6 GHz Intel Core i7java
內存:16 GB 2133 MHz LPDDR3git
Command Line Tools (macOS Sierra version 10.12) for XCode: Version 9.2github
Boot JDK: jdk1.8.0_131shell
homebrew是macOS 缺失的軟件包管理器。安裝指南參考官方網站。macos
$ brew install mercurial
安裝mercurial,它是OpenJDK的版本管理工具,只是爲了下載OpenJDK的源代碼。若是實在不想安裝這個奇怪的工具,可自行在github上找我的的OpenJDK fork repo,而後就能夠使用Git工具了。bash
$ brew install freetype
我在編譯的過程當中沒有進行這一步,若是遇到缺乏freetype的錯誤可以使用homebrew安裝。工具
獲取源代碼oop
$ hg clone http://hg.openjdk.java.net/jdk9/jdk9 OpenJDK9
$ cd OpenJDK9
$ bash ./get_source.sh
網站
編譯配置
bash configure --disable-warnings-as-errors --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/
--disable-warnings-as-errors
:禁用將警告當作錯誤,避免由於警告而中斷編譯
--with-boot-jdk
: 指定Boot JDK的位置
編譯OpenJDK
make all
可是遇到了兩個問題,Google搜索後修改以後完成編譯
error: ordered comparison between pointer and zero ('char *' and 'int') if (base() > 0) { ~~~~~~ ^ ~ 1 error generated.
error: ordered comparison between pointer and zero ('address' (aka 'unsigned char *') and 'int') if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops.
兩個是同等類型的錯誤,須要找到該文件,將表達式進行修改。
if (base() > 0) { ==> if (base() != NULL) {
if (Universe::narrow_oop_base() > 0) { // Implies UseCompressedOops. ==> if (Universe::narrow_oop_base() != NULL) { // Implies UseCompressedOops.
修改完成以後從新編譯便可,該問題在使用Command Line Tools (macOS Sierra version 10.12) for XCode: Version 9.2的時候出現。參考資料:Xcode 9.0 (9A235) problems
打印編譯後Java的版本
build/macosx-x86_64-normal-server-release/jdk/bin/java -version
shell openjdk version "9-internal" OpenJDK Runtime Environment (build 9-internal+0-adhoc.xiaoweiliu.jdk9) OpenJDK 64-Bit Server VM (build 9-internal+0-adhoc.xiaoweiliu.jdk9, mixed mode)