前言: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
,如果沒有提示如下內容,說明本地沒有安裝,順着流程安裝就行。
2.1.2、方法二(推薦)
將macos升級到最新版
訪問Apple Developer,下載
在AppStore裏下載
2.2、準備一個JDK11
訪問adoptopenjdk,可下載OpenJDK11。外網很慢。
訪問huaweicloud,也可下載JDK11。我是用這個下的。記得在bash_profile裏配路徑。
2.3、安裝OpenJDK編譯依賴庫
brew install freetype
brew install autoconf
brew install ccache
進入源碼目錄,執行bash ./configure
執行完bash ./configure,可看見目錄下自動新增了build文件夾
報錯:
error: No xcodebuild tool and no system framework headers found
解決方式:
我網上找資料,試了很多方法,最後,我升級了更新了MacOS,重裝了xcode,見2.1.2、方法二。
而後執行
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
問題解決。
在執行bash ./configure
的時候,可能會有安全警告,在系統偏好設置>>安全與隱私>>通用裏允許訪問jdk11就行了。
看到下圖,就說明構建編譯環境成功了
此時build文件夾
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.
解決方式:
找到報錯的那行代碼,註釋掉。而後再make clean,再make images。
問題解決。
4、用CLion調試
4.1、將OpenJDK12導入CLion
4.2、修改CMakeLists.txt(可跳過不看)
可是我在https://github.com/ojdkbuild/ojdkbuild/tree/master/src看到了jdk11、jdk13、jdk14,就是沒看到jdk12
於是我把jdk11和jdk13的CMakeLists.txt進行對比,發現不同之處後,我想過複製jdk13的CMakeLists.txt,然後把版本和路徑照葫蘆畫瓢地修改。奈何,我不知道${OJDKBUILD_DIR}
是代表什麼,也不知道${PROJECT_NAME}_INSTALLER_UPDATE_UUID
的值怎麼來的。所以我沒有修改CMakeLists.txt。講道理是要修改的,過段時間再看看。
4.3、調試
恭喜,可以開始JVM探索之旅了!