使用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关掉,果然就编译通过了。