步驟和鏈接 https://blog.csdn.net/qq_34621987/article/details/87872704 類似,不同之處在於
1. 編譯Yak而不是OpenJDK,Yak源碼鏈接 鏈接: https://pan.baidu.com/s/109i34OZwZZqsZv8aKxED6g 密碼: cfuz
2. make all時出現錯誤:
recipe for target 'ad_stuff' failed
make[5]: *** [ad_stuff] Error 2
解決辦法:由於make4.x的原因,make時會出現以上錯誤
修改hotspot/make/linux/makefiles/adjust-mflags.sh文件,加上兩個I
echo "$MFLAGS" \
| sed '
s/^-/ -/
- s/ -\([^ ][^ ]*\)j/ -\1 -j/
+ s/ -\([^ I][^ I]*\)j/ -\1 -j/
s/ -j[0-9][0-9]*/ -j/
s/ -j\([^ ]\)/ -j -\1/
s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
3. 編譯完進入bin目錄後輸入./java -version出現錯誤
Error: dl failure on line 864 Error: failed /mnt/jdk8/build/linux-x86_64-normal-server-release/jdk/lib/amd64/server/libjvm.so, because /mnt/jdk8/build/linux-x86_64-normal-server-release/jdk/lib/amd64/server/libjvm.so: undefined symbol: _ZN23G1SATBCardTableModRefBS24write_ref_array_pre_workIP7oopDescEEvPT_i
因爲之前去掉了步驟2中adjust-mflags.sh的這一行,導致編譯出現錯誤
s/ -\([^ ][^ ]*\)j/ -\1 -j/
因此按照步驟2中操作進行編譯不會出現上述錯誤