1. 程式人生 > >mac編譯openjdk8記錄

mac編譯openjdk8記錄

電腦配置:

這裡寫圖片描述

電腦安裝的jdk: jdk1.8.0_151

準備工作:

1、關閉rootless:開機的時候長按command+R,等出來進度條走了,放開,然後進入恢復模式,開啟終端,執行 csrutil disable,成功後重啟
2、Openjdk8下載:
http://www.java.net/download/openjdk/jdk8/promoted/b132/openjdk-8-src-b132-03_mar_2014.zip
3、XCode :直接從appstroe下載的
4、安裝XQuartz
安裝好後執行 ln -s /opt/X11/include/X11 /usr/local/include/X11
5、安裝freetype
brew install freetype

安裝ccache提高編譯速度
$ brew install ccache
6、link llvm-gcc和llvm-g++(不確定是否必須,保險起見加上):

sudo ln -s /usr/bin/llvm-g++ /Applications/Xcode.app/Contents/Developer/usr/bin/llvm-g++   
sudo ln -s /usr/bin/llvm-gcc /Applications/Xcode.app/Contents/Developer/usr/bin/llvm-gcc   

7、修改原始碼:

# 1. 修改generated-configure.sh(路徑:common/autoconf/generated-configure.sh)
註釋20061// as_fn_error $? "GCC compiler is required. Try setting --with-tools-dir." "$LINENO" 5 註釋21640// as_fn_error $? "GCC compiler is required. Try setting --with-tools-dir." "$LINENO" 5 # 2. 修改relocInfo.hpp(路徑:hotspot/src/share/vm/code/relocInfo.hpp) 修改367行 inline friend relocInfo prefix_relocInfo(int datalen); 修改472
行 inline relocInfo prefix_relocInfo(int datalen = 0) { assert(relocInfo::fits_into_immediate(datalen), "datalen in limits"); return relocInfo(relocInfo::data_prefix_tag, relocInfo::RAW_BITS, relocInfo::datalen_tag | datalen); } # 3. 修改openjdk/hotspot/src/share/vm/opto/loopPredicate.cpp 修改775行為 assert(rng->Opcode() == Op_LoadRange || _igvn.type(rng)->is_int()->_lo >= 0, "must be"); # 4.修改openjdk/hotspot/src/share/vm/runtime/virtualspace.cpp 修改331行為 if (base() != 0) {

開始編譯:

1、改資料夾許可權
為了防止中間有許可權問題,我直接給整個openjdk的資料夾受了777許可權

chmod -R 777 openjdk

2、執行configure

sh configure --with-debug-level=slowdebug --with-target-bits=64 --with-jvm-variants=server --with-jdk-variant=normal --with-milestone=internal --with-update-version=b25 --with-build-number=b25 --with-num-cores=2 --with-jobs=2 CC=clang CXX=clang++ --with-freetype-include=/usr/local/include/freetype2 --with-freetype-lib=/usr/local/lib/ --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home --enable-ccache

3、執行make

make COMPILER_WARNINGS_FATAL=false LFLAGS='-Xlinker -lstdc++' CC=clang USE_CLANG=true LP64=1

4、成功

最後

前面寫的準備工作基本上把我中間遇到的問題都包括了,那些要修改的原始碼就是問題的解決。