Ubuntu 12.04 下编译OpenJDK 7问题

刚开始选择在Windows的Cygwin下编译,结果问题连连,两天都搞不定。只有换到Ubuntu下面。记录一下

不过12.04的Ubuntu使用的是3.2的内核,而openJDK的hotspot的Makefile里面支持的内核没这么高,所以会遇到一些问题。所以个人建议还是用9或者10的Ubuntu版本。

编译的过程不复杂:下载源代码。 按照README-builds.html里面ubuntu或者linux的步骤做就可以了。README-builds.html虽然很多,但是一定要看 了后,才可能成功编译。

现在只列一下遇到的问题:

1.刚开始会有很多的库没有,make sanity都过不了,按提示下载即可

2.缺少drops文件(need access to drops.)。

应该设置ALT_DROPS_DIR指向drops目录。所谓的drops目录就是包含了JAXP和JAX-WS源代码的目录。默认不包含在openJDK源代码中。可以手动去下载。

另外,这个问题也可以不设置drops目录,而在编译是,使用:

make ALLOW_DOWNLOADS=true

这样编译的时候,ant会自动去下载的

3. OS Version is not supported

因为3.2的内核不支持。这个问题可以引用网上的解答,修改hotspot/make/linux/Makefile,把3.2的内核加入到支持列表中即可:

4.__LEAF redefined。由于g++的高版本中,增加了对__LEAF的定义,而openJDK源代码中也有__LEAF定义,于是重复。对于这个bug,有如下引用可以修改:

要修改6个文件(我不会用hg,所以直接就把这6个文件用正确的替换掉了)

5.undefined reference to `snd_pcm_format_mask_malloc'(很多undefined reference to `snd_****`)

这貌似也是一个bug,链接的顺序不对,可以引用的方法:

把lasound加入到extra_libs里面去即可

6.另外,如果找不到shape.h,可以安装libxtst-dev,libxrender-dev, 还可能要更新freetype的版本,下载他的dev版本等等。

挺多麻烦事,不过还好,几个小时过后还是编译出来了,兴奋啊。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/20720.html