Linux 系統:CentOS_6.5_x86_64 java
JDK 安裝包:jdk-7u80-linux-x64.rpm linux
OpenJDK 源碼包:OpenJDK7 c++
下載路徑:http://download.java.net/openjdk/jdk7/promoted/b147/openjdk-7-fcs-src-b147-27_jun_2011.zip apache
ANT 安裝包:apache-ant-1.8.3-bin.zip 瀏覽器
下載路徑:http://archive.apache.org/dist/ant/binaries/apache-ant-1.8.3-bin.zip 服務器
網絡環境:聯網,由於有些包須要 yum 下載 網絡
1)安裝必要的軟件
安裝 jdk-7u80-linux-x64.rpm(命令:rpm -ivh jdk-7u80-linux-x64.rpm)
安裝 ant,步驟以下:
①解壓(命令:unzip apache-ant-1.8.3-bin.zip)
②把解壓出來的文件夾移動到預期的安裝目錄
③配置環境變量,打開 /etc/profile 文件,添加 ant 環境變量的配置,以下:
④更新配置文件(命令:source /etc/profile)
⑤查看是否安裝正常(命令:ant -version) jvm
2)上傳OpenJDK源碼包,可上傳到任意目錄(例如:/tmp/jdkBuild),並解壓(命令:unzip openjdk-7-fcs-src-b147-27_jun_2011.zip) 字體
3)配置環境變量ui
#語言選項,這個必須設置,不然編譯好後會出現一個HashTable的NPE錯 export LANG=C #Bootstrap JDK的安裝路徑。必須設置 export ALT_BOOTDIR=/usr/java/jdk1.7.0_80 export ALT_JDK_IMPORT_PATH=/usr/java/jdk1.7.0_80 #ant路徑設置 export ANT_HOME=/opt/apache-ant-1.8.3 #容許自動下載依賴 export ALLOW_DOWNLOADS=true #並行編譯的線程數,設置爲和CPU內核數量一致便可 export HOTSPOT_BUILD_JOBS=6 export ALT_PARALLEL_COMPILE_JOBS=6 #比較本次 build 出來的映像與先前版本的差別。這對咱們來講沒有意義 #必須設置爲 false,不然 sanity 檢查會報缺乏先前版本JDK的映像的錯誤提示 #若是已經設置 dev 或者 DEV_ONLY=true ,這個不顯式設置也行 export SKIP_COMPARE_IMAGES=true #使用預編譯頭文件,不加這個編譯會慢一些 export USE_PRECOMPILED_HEADER=true #要編譯的內容 export BUILD_LANGTOOLS=true #export BUILD_JAXP=false #export BUILD_JAXWS=false #export BUILD_CORBA=false export BUILD_HOTSPOT=true export BUILD_JDK=true #要編譯的版本 #export SKIP_DEBUG_BUILD=false #export SKIP_FASTDEBUG_BUILD=true #export DEBUG_NAME=debug #把它設置爲 false 能夠避開 javaws 和瀏覽器 Java 插件之類的部分的 build BUILD_DEPLOY=false #把它設置爲 false 就不會 build 出安裝包。由於安裝包裏有些奇怪的依賴 #但即使不 build 出它也已經能獲得完整的 JDK 映像,因此仍是別 build 它好了 BUILD_INSTALL=false #編譯結果所存放的路徑 export ALT_OUTPUTDIR=/tmp/jdkBuild/build #這兩個環境變量必須去掉,否則會有很詭異的事情發生(我沒有具體查過這些"詭異的事情",Makefile腳本檢查到有這 2 個變量就會提示警告) unset JAVA_HOME unset CLASSPATH
4)進入OpenJDK源碼目錄,檢查配置是否所有正確(命令:make sanity),檢查成功,效果以下:
5)開始編譯(命令:make 2>&1 | tee $ALT_OUTPUTDIR/build.log)
1) make sanity 提示 check your value of ALT_CUPS_HEADERS_PATH
緣由:缺乏cups-devel
解決方式:安裝 cups-devel (命令:yum install cups-devel.x86_64)
2) yum 安裝提示 Couldn't resolve host
緣由:域名解析服務器未配置
解決方式:
方式一:(重啓系統或網絡服務後,修改會丟失)打開文件 /etc/resolv.conf ,添加域名服務器的地址配置
方式二:(永久修改)打開 linux 的網絡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0,添加以下配置,重啓系統或重啓網絡服務(命令:service network restart)
3)yum 安裝提示 The requested URL returned error: 404 Not Found
緣由:系統下載文件的時候識別到的 releasever 錯誤
解決方式:打開文件 /etc/yum.repos.d/CentOS-Base.repo ,修改 baseurl 值
4) make sanity 提示 FreeType version 2.3.0 or higher is required
緣由:freetype 字體錯誤
解決方式:安裝 freetype(命令:yum install freetype.x86_64 freetype-devel.x86_64)
5) make sanity 提示 The version of ant being used is older
緣由:未安裝 ant 或 ant 版本過低
解決方式:安裝 ant,見上方步驟
6) make sanity 提示 You seem to not have installed ALSA 0.9.1 or higher
緣由:缺乏alsa的包
解決方式:安裝alsa的包(命令:yum install alsa*)
7)make 編譯提示 Redirection detected from https to http. Protocol switch unsafe, not allowed
緣由:在這個build-drop-jaf_src.xml的96行中獲取包下載的地址失效或有問題,就會致使改問題發生,這時你須要把那些包本身下載,主要是jdk7-jaf-2010_08_19.zip這個包下載不了
解決方式:
①下載依賴的jaxp、jaf、jaxws
jaxp145_01.zip: http://download.java.net/jaxp/1.4.5/jaxp145_01.zip
jdk7-jaxws2_2_4-b03-2011_05_27.zip: http://download.java.net/glassfish/components/jax-ws/openjdk/jdk7/jdk7-jaxws2_2_4-b03-2011_05_27.zip
jdk7-jaf-2010_08_19.zip:https://netix.dl.sourceforge.net/project/jdk7src/input-archives/jdk7-jaf-2010_08_19.zip
②進入openjdk源碼目錄,建立drop文件夾(命令:mkdir drop),移動三個包到drop目錄下
③配置環境變量(命令:export ALT_DROPS_DIR=/tmp/jdkBuild/openjdk/drop)
④再次執行make編譯命令
8)make 編譯提示 g++: Command not found
緣由:g++沒有安裝或沒有更新
解決方式:安裝或更新g++(命令:yum -y update gcc 或 yum -y install gcc+ gcc-c++)
9)make 編譯提示 symbol JVM_SetNativeThreadName, version SUNWprivate_1.1 not defined in file libjvm.so with link time reference
緣由:不明
解決方式:換成jdk6來編譯openjdk7,修改成jdk6後,需同時修改環境變量,以下:
export ALT_BOOTDIR=/usr/java/jdk1.6.0_45
export ALT_JDK_IMPORT_PATH=/usr/java/jdk1.6.0_45
10)make 編譯提示 time is more than 10 years from present
緣由:時間不對
解決方式:修改 openjdk 源碼目錄下 CurrencyData.properties 文件內的時間
文件路徑:openjdk/jdk/src/share/classes/java/util/CurrencyData.properties,時間修改成10年之內便可(我不肯定是哪一個時間的影響,那就都修改吧),修改位置以下:
11)make 編譯提示 /usr/bin/ld: cannot find -lX11
緣由:缺乏 X11 相關的包
解決方式:安裝libX11(命令:yum install *X11*)
12)make 編譯提示 error: X11/Intrinsic.h: No such file or directory
緣由:缺乏 Xt-devel 的包
解決方式:安裝 Xt-devel(命令:yum install libXt-devel)
13)make 編譯提示 error: X11/extensions/shape.h: No such file or directory
緣由:缺乏 libXtst 的包
解決方式:安裝 libXtst(命令:yum install libXtst-devel)
14)make 編譯提示 error: X11/extensions/Xrender.h: No such file or directory
緣由:缺乏 Xrender-devel 的包
解決方式:安裝 Xrender-devel(命令:yum install libXrender-devel)
初始化配置腳本:initBuild(命令:source initBuild)
export LANG=C export ALT_BOOTDIR=/usr/java/jdk1.6.0_45 export ALT_JDK_IMPORT_PATH=/usr/java/jdk1.6.0_45 export ANT_HOME=/opt/apache-ant-1.8.3 export ALLOW_DOWNLOADS=true export HOTSPOT_BUILD_JOBS=4 export ALT_PARALLEL_COMPILE_JOBS=4 export SKIP_COMPARE_IMAGES=true export USE_PRECOMPILED_HEADER=true export BUILD_LANGTOOLS=true export BUILD_HOTSPOT=true export BUILD_JDK=true BUILD_DEPLOY=false BUILD_INSTALL=false export ALT_OUTPUTDIR=/tmp/jdkBuild/build export ALT_DROPS_DIR=/tmp/jdkBuild/openjdk/drop unset JAVA_HOME unset CLASSPATH
初始化安裝腳本:initInstall.sh(命令:./initInstall.sh)
yum install cups-devel.x86_64 yum install freetype.x86_64 freetype-devel.x86_64 yum install alsa* yum -y install gcc+ gcc-c++ yum install *X11* yum install libXt-devel yum install libXtst-devel yum install libXrender-devel
源碼官網下載連接:
https://blog.csdn.net/chenyyhh92/article/details/78298510
編譯JDK問題參考:
http://chenjingbo.iteye.com/blog/1117021
https://blog.csdn.net/pangencheng/article/details/80072880