天天看點

xubuntu12.10編譯openjdk7

參考http://happyenjoylife.iteye.com/blog/858147的文章,成功編碼出openjdk7。我的系統是xubuntu12.10。記錄下錯誤解決方法。

1.	安裝mercurial 
Mercurial是一個版本管理工具。 
sudo apt-get install mercurial 

安裝mercurial的擴充,添加fclone在支援
hg clone http://bitbucket.org/pmezard/hgforest-crew 

将以下内容添加到$HOME/.hgrc檔案中,如果沒有則自己建立一個: 
[extensions] 
forest=/home/daren/hgforest-crew/forest.py 
fetch= 

2.	下載下傳jdk7源碼 
hg fclone http://hg.openjdk.java.net/jdk7/jdk7 

3.	安裝gcc、g++、make等 
sudo apt-get install build-essential 

4.	安裝XRender 
sudo apt-get install libxrender-dev 
sudo apt-get install xorg-dev 

5.	安裝alsa 
sudo apt-get install libasound2-dev 

6.	Cups 
sudo apt-get install libcups2-dev 

7.	安裝jdk6 
直接去軟體中心搜尋下jdk6安裝

8.	安裝ant 
設定ANT_HOME

9.	安裝findbugs       

編譯

export ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk-amd64/

export ALT_JDK_IMPORT_PATH=/usr/lib/jvm/java-6-openjdk-amd64/

#設定JAXWS、JAXP、CORBA不編譯

make DEBUG_NAME=all_fastdebug BUILD_JAXWS=false BUILD_JAXP=false BUILD_CORBA=false

遇到的問題:

1、"*** This OS is not supported:" `uname -a`; exit 1;

解決:

jdk限制了編譯的liniux核心版本,修改檔案/home/thebye85/jdk7/hotspot/make/linux/Makefile

檢視目前的核心版本:$ uname -r

在這行最後加上目前的核心版本3.2%,如下:

SUPPORTED_OS_VERSION = 2.4% 2.5% 2.6% 2.7% 3.2%

2、/home/thebye85/jdk7/hotspot/src/share/vm/runtime/interfaceSupport.hpp:430:0: 錯誤: “__LEAF”重定義 [-Werror]

/usr/include/x86_64-linux-gnu/sys/cdefs.h:44:0: 附注: 這是先前定義的位置

cc1plus: all warnings being treated as errors

解決:

修改/usr/include/x86_64-linux-gnu/sys/cdefs.h,将__LEAF換個名字,如修改為__LEAF_A

3、collect2: ld 傳回 1

make[5]: *** [/home/thebye85/jdk7/build/linux-amd64/lib/amd64/libjsoundalsa.so] 錯誤 1

make[5]:正在離開目錄 `/home/thebye85/jdk7/jdk/make/javax/sound/jsoundalsa'

make[4]: *** [build] 錯誤 1

make[4]:正在離開目錄 `/home/thebye85/jdk7/jdk/make/javax/sound'

make[3]: *** [all] 錯誤 1

make[3]:正在離開目錄 `/home/thebye85/jdk7/jdk/make/javax'

make[2]: *** [all] 錯誤 1

make[2]:正在離開目錄 `/home/thebye85/jdk7/jdk/make'

make[1]: *** [jdk-build] 錯誤 2

make[1]:正在離開目錄 `/home/thebye85/jdk7'

make: *** [build_product_image] 錯誤 2

解決:

ln -s /home/thebye85/jdk7/build/linux-amd64/lib/amd64/libjsound.so /home/thebye85/jdk7/build/linux-amd64/lib/amd64/libjsoundalsa.so