使用centos7編譯jdk8的時候很順利,換成Ubuntu16就一堆坑,根本原因就是系統太新,Ubuntu16自帶的jdk版本都到9了~~
1、編譯的時候添加DISABLE_HOTSPOT_OS_VERSION_CHECK=ok選項,不然會報版本不支援
make images DISABLE_HOTSPOT_OS_VERSION_CHECK=ok
2、修改hotspot/make/linux/makefiles/adjust-mflags.sh檔案第67行,不然會報" recipe for target ‘ad_stuff’ failed"
s/ -\([^ ][^ ]*\)j/ -\1 -j/
改為
s/ -\([^ I][^ ]*\)j/ -\1 -j/
#第一個[^ ]改為[^ I]
好像是因為make版本導緻的問題,我的make版本是4.1,按這樣修改後問題解決。
有文章說直接删掉這行,但是按這樣來又會導緻别的問題,按照另一篇文章說的修改,就沒問題了
最後想說,最好還是選擇合适的系統版本編譯吧,不然踩坑太花時間了
參考文章:
https://blog.csdn.net/m0_37325106/article/details/79990293
https://segmentfault.com/a/1190000013390255
再說下編譯JVM過程中遇到的一個坑
編譯的時候報錯:
## Starting jdk
Compiling 9417 files for BUILD_JDK
Killed
CompileJavaClasses.gmk:316: recipe for target '/data/github/jdk-jdk8-b120/build/linux-x86_64-normal-server-release/jdk/classes/_the.BUILD_JDK_batch' failed
make[2]: *** [/data/github/jdk-jdk8-b120/build/linux-x86_64-normal-server-release/jdk/classes/_the.BUILD_JDK_batch] Error 137
BuildJdk.gmk:64: recipe for target 'classes-only' failed
make[1]: *** [classes-only] Error 2
/data/github/jdk-jdk8-b120//make/Main.gmk:115: recipe for target 'jdk-only' failed
make: *** [jdk-only] Error 2
本來我前幾次編譯都成功了,後面開始編譯就一直報這個錯,根據資訊完全看不出是哪裡問題。
http://freebsd.1045724.x6.nabble.com/Failure-compiling-java-openjdk8-td6093672.html
然後看到這篇文章說可能是記憶體不足,試着把虛拟機裡面的vscode關掉,果然就編譯通過了。