天天看点

【备忘】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关掉,果然就编译通过了。