歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 12.04 下編譯OpenJDK 7問題

Ubuntu 12.04 下編譯OpenJDK 7問題

日期:2017/2/28 15:30:10   编辑:Linux教程

剛開始選擇在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版本等等。

挺多麻煩事,不過還好,幾個小時過後還是編譯出來了,興奮啊。

Copyright © Linux教程網 All Rights Reserved