osx環境コンパイルjdk 8
2486 ワード
会社の最近のプロジェクトはJdk 8を統一的に使用しているので、自分の機械にopen jdkのデバッグ環境を構築するつもりです.
jdk 8のコンパイル方式は比較的大きく変化し、antに依存するのではなくconfigure&makeの方式を採用した.
次に、具体的なコンパイル手順を示します. mercurial(openjdkソースコードはhgによって管理されています)をインストールし、3.8.2バージョン: を選択しました.ダウンロードソース:
jdkソースコードのダウンロードの中で、ネットワークが極めて不安定であることを発見して、私は何度も再試行してやっとソースコードをすべてローカルにダウンロードしました;インストール依存 コンパイル前準備 relocInfo.hppを変更する367行(hotspot/src/share/vm/code/relocInfo.hpp):変更前:
変更後: generated-configure.shの20061および21640行(common/autoconf/generated-configure.sh)を変更し、
変更後:
私の本機のxcodeは7.3.1で、コンパイラはclangで、バージョンはApple LLVM version 7.3.0(clang-703..31);jdkコンパイルにはデフォルトでgccコンパイラが必要です.clang 703はほとんどのgcc構文をサポートしているので、ここではコンパイラチェックを直接注釈します.もちろん、gccコンパイラをインストールしてコンパイルすることもできます.注意:コンパイラのバージョンは重要です.そうしないと、文法エラーがたくさん報告されます.gccを採用する場合、要求>=3.81コンパイル
一般的に、jdk 8をコンパイルするにはboot-jdkのバージョンがjdk 1.7であることが要求され、ここで私が設定したコンパイルが完了したら、gdbでデバッグできます:
注記:jdk 8のコンパイルは、cups、pulse、alsaなど、他のものにも依存します.brewでインストールできます.
jdk 8のコンパイル方式は比較的大きく変化し、antに依存するのではなくconfigure&makeの方式を採用した.
次に、具体的なコンパイル手順を示します.
sudo brew install mercurial
hg clone http://hg.openjdk.java.net/jdk8/jdk8 java-source
cd java-source
chmod +x get_source.sh
./get_source.sh
jdkソースコードのダウンロードの中で、ネットワークが極めて不安定であることを発見して、私は何度も再試行してやっとソースコードをすべてローカルにダウンロードしました;
brew install freetype #2.6.3
inline friend relocInfo prefix_relocInfo(int datalen=0);
変更後:
inline friend relocInfo prefix_relocInfo(int datalen);
configure: error: GCC compiler is required
エラーを解決します.変更前は:as_fn_error $? "GCC compiler is required. Try setting --with-tools-dir." "$LINENO" 5
変更後:
#as_fn_error $? "GCC compiler is required. Try setting --with-tools-dir." "$LINENO" 5
私の本機のxcodeは7.3.1で、コンパイラはclangで、バージョンはApple LLVM version 7.3.0(clang-703..31);jdkコンパイルにはデフォルトでgccコンパイラが必要です.clang 703はほとんどのgcc構文をサポートしているので、ここではコンパイラチェックを直接注釈します.もちろん、gccコンパイラをインストールしてコンパイルすることもできます.注意:コンパイラのバージョンは重要です.そうしないと、文法エラーがたくさん報告されます.gccを採用する場合、要求>=3.81
./configure --with-debug-level=slowdebug --with-boot-jdk=/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home --with-target-bits=64 --with-jvm-variants=server --with-jdk-variant=normal --with-milestone=internal --with-num-cores=2 --with-jobs=4 CC=clang CXX=clang++
make COMPILER_WARNINGS_FATAL=false LFLAGS='-Xlinker -lstdc++' CC=clang USE_CLANG=true LP64=1
一般的に、jdk 8をコンパイルするにはboot-jdkのバージョンがjdk 1.7であることが要求され、ここで私が設定した
with-boot-jdk
はjdk 1.7.0.79である.export JAVA_ROOT_PATH=~/java-source/jdk8/build/macosx-x86_64-normal-server-slowdebug
export ALT_JAVA_HOME=${JAVA_ROOT_PATH}/jdk
${ALT_JAVA_HOME}/bin/javac -g Hello.java
${JAVA_ROOT_PATH}/hotspot/bsd_amd64_compiler2/debug/hotspot -gdb HelloWorld
注記:jdk 8のコンパイルは、cups、pulse、alsaなど、他のものにも依存します.brewでインストールできます.