天天看點

【備忘】Ubuntu16編譯openjdk8的踩坑

使用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關掉,果然就編譯通過了。