剛開始選擇在windows的Cygwin下編譯,結果問題連連,兩天都搞不定。。只有換到Ubuntu下面。。記錄一下 html
不過12.04的Ubuntu使用的是3.2的內核,而openJDK的hotspot的Makefile裏面支持的內核沒這麼高,因此會遇到一些問題。因此我的建議仍是用9或者10的ubuntu版本。。 java
編譯的過程不復雜:下載源代碼。 按照README-builds.html裏面ubuntu或者linux的步驟作就能夠了。README-builds.html雖然不少,可是必定要看 了後,纔可能成功編譯。。 linux
如今只列一下遇到的問題: ubuntu
1.剛開始會有不少的庫沒有,make sanity都過不了,按提示下載便可 windows
2.缺乏drops文件(need access to drops.)。 ui
應該設置ALT_DROPS_DIR指向drops目錄。所謂的drops目錄就是包含了JAXP和JAX-WS源代碼的目錄。默認不包含在openJDK源代碼中。能夠手動去http://download.java.net/openjdk/jdk7/下載。 spa
另外,這個問題也能夠不設置drops目錄,而在編譯是,使用: .net
make ALLOW_DOWNLOADS=true orm
這樣編譯的時候,ant會自動去下載的 htm
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版本等等。。。 挺多麻煩事,不過還好,幾個小時事後仍是編譯出來了,興奮啊。。