2015-04-20 12:15:57
来 源
中存储网
Ubuntu
刚开始选择在Windows的Cygwin下编译,结果问题连连,两天都搞不定。只有换到Ubuntu下面。记录一下。 不过12.04的Ubuntu使用的是3.2的内核,而openJDK的hotspot的Makefile里面支持的内核没这么高,所以会遇到一些问题。所以个人建议还是用9或者10的Ubuntu版本

刚开始选择在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源代码中。可以手动去http://download.java.net/openjdk/jdk7/下载。

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

make ALLOW_DOWNLOADS=true

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

3. OS Version is not supported

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

http://mail.openjdk.java.net/pipermail/porters-dev/2011-October/000367.html

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

http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/rev/a6eef545f1a2

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

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

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

http://sunnycomputerlab.com/roller/sunny/entry/openjdk_compile_problem_on_ubuntu

把lasound加入到extra_libs里面去即可

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

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

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。