compiler-jdk12GA
compiler jdk12GA
编译jdk, 一般文章都使用
1 | hg clone http://hg.openjdk.java.net/jdk/jdk |
但是在ArchLinux 上,除非安装了mercurial ,一般使用的还是git 比较多
而刚好openjdk在github 上同步了一份read-only 的repo
1 | git clone git@github.com:openjdk/jdk.git |
可以同步将openjdk 源码下载到本地,在当前(2019年7月25日10:53:27) openjdk 的主线版本为openjdk 14
而按照boot-jdk 版本在N-1或N-1还没有GA的情况下,需要N-2版本的编译说明,如果编译主线版本,那么需要openjdk 13的版本
而在aur中openjdk 还是12的版本,所以按照N-1规则,切换到openjdk 13 的tag,发现编译不成功,引入了很多编译错误
再次选择到jdk-12-ga 这个tag, 因为机器上openjdk 12 的版本是12.0.2+10,按照tag 来看,该版本的编译基础是jdk-12+10 的tag
而jdk-12-ga 版本,是在jdk-12+33这个版本上,所以符合N-1版本的规定
版本切换好后,就可以尝试对其进行编译了, 一个C/C++项目,传承远古时期的三板斧configure, make , make install,所以先configure
(PS: 现在基本都有各类打包侠对各类软件进行打包, 比如boot-jdk 不就是打包侠打包的吗,而在遥远的远古时代,你需要autoconf, configure, make , make install , make test, 每天都在解决软件依赖,解决符号链接不正确,依赖软件版本不匹配等等糟心事, 所以感谢打包侠,他们还陷入在那远古的恐慌之中)
1 | bash configure --with-debug-level=fastdebug --with-boot-jdk=/usr/lib/jvm/java-12-openjdk --disable-warnings-as-errors |
debug-level有各类选择
- release
- fastdebug
- slowdebug
- optimized
默认是release, 这里为了更好的玩耍,所以选择fastdebug , 快速调试
需要特别注意的是基本上一定要加入–disable-warnings-as-errors 这个参数,关闭对警告和错误的检查,不然在make 阶段就走两步就进行不下去了, 除非有莫大的勇气去解决那一堆堆的错误,所以还是假装这些警告和错误不存在吧
好了,configure 很容易成功,基本上只要boot-jdk 版本对了,就成功了,可以开始漫长的make阶段
1 | make jdk-image |
然后就是漫长的等待,按照不同的机器性能需要的时间也各不相同,这时候就可以喝个茶,放放水
而在这段时间,像我手中的这台垃圾本,8G内存的配置是编辑的最小要求,所以赶快把firefox kill 掉,不然编译半天因为内存耗尽失败就难受了
vim打开的maven 项目也赶快关掉,不然vim-javacomplete2这类插件在后台不断的执行mvn package, 也导致耗尽内存
自从vim 8.0 之后有异步线程可以执行,现在的vim plugin 就默默的搞很多事情,导致垃圾本已经不能好好使用了
好了经过不知多么漫长时间的等待,终于编译成功,这一刻仿佛回到了远古时代,心力交瘁
在当前目录的build/linux-x86_64-server-fastdebug/jdk 下面就编译好了期待的jdk 了
而有了自定义编译的jdk12-GA版本,就可以将linux-x86_64-server-fastdebug 这个目录copy 到其它地方,然后设置编译的jdk 为JAVA_HOME的目录
然后就可以用它作为boot-jdk 来编译jdk13, jdk13 如果编译成功,就可以再次编译主线的jdk14了
Updateing: 使用编译好的jdk12-GA 来作为boot-jdk , 编译13和14版本的jdk 都出现问题
1 | BailoutAndRestartBackendException_OptionDescriptors.java:22: error: cannot find symbol |
看起来确实没有定义的样子,所以先不管了
- 标题: compiler-jdk12GA
- 作者: The Redefine Team
- 创建于 : 2019-07-25 10:47:23
- 更新于 : 2023-05-23 18:52:03
- 链接: https://redefine.ohevan.com/2019/07/25/compiler-jdk12GA/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。