osx環境コンパイルjdk 8

2486 ワード

会社の最近のプロジェクトはJdk 8を統一的に使用しているので、自分の機械にopen jdkのデバッグ環境を構築するつもりです.
jdk 8のコンパイル方式は比較的大きく変化し、antに依存するのではなくconfigure&makeの方式を採用した.
次に、具体的なコンパイル手順を示します.
  • mercurial(openjdkソースコードはhgによって管理されています)をインストールし、3.8.2バージョン:
  • を選択しました.
       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  
    
  • コンパイル前準備
  • relocInfo.hppを変更する367行(hotspot/src/share/vm/code/relocInfo.hpp):変更前:
  • inline friend relocInfo prefix_relocInfo(int datalen=0);
    

    変更後:
    inline friend relocInfo prefix_relocInfo(int datalen);
    
  • generated-configure.shの20061および21640行(common/autoconf/generated-configure.sh)を変更し、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である.
  • コンパイルが完了したら、gdbでデバッグできます:
  • 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でインストールできます.