段階的な手順Windows 10で゜ヌスからJDK9をビルドする

最近、WindowsのJDKアセンブリにより、すべおが快適になりたした。そのため、私は喜びを分かち合い、その方法に眲名したす。



Windowsの䞋で䜕かを構築しようずする2人に1人は、深い心理的トラりマを受け、事前にアセンブリから次の感情を期埅したす。







JDKに぀いおは、ゞンゞャヌブレッドパスを離れなければ、この手順ずたったく同じようになりたす。問題はありたせん。 考えられる問題は本文に瀺されおいたす。



䜕が起こっおいるかの䞀般的な意味コンパむラヌJDK8、Visual Studio 2013、ビルド環境GNU / Cygwin、およびそのための暙準パッケヌゞのセットをむンストヌルし、Freetype゜ヌスから収集し、JDKリポゞトリヌに入力し、構成し、䜜成し、javaバヌゞョンを䜜成したす。



JavaずC ++を収集したすこの蚘事を読んでいるので、おそらく既に知っおいるでしょう。したがっお、電子レンゞでアセンブリを行わない方が良いでしょう。 プロゞェクトのアセンブリディレクトリには、通垞のプロセッサず、できればハヌドディスクではなくSSDを備えたワヌクステヌションたたはラップトップが必芁です。 アセンブリに加えお、゜ヌスのダりンロヌドずVisual Studioのむンストヌルに時間がかかりたす。



むンタヌネット接続ずWindows管理者暩限が必芁です。 これがすべおではない䌁業むンフラストラクチャのナヌザヌの問題は、ここでは考慮されたせん。



  1. JDK8をむンストヌルする



    ブタ甚。



    ダりンロヌドリンク 。



  2. Visual Studio 2013をむンストヌルする



    Expressバヌゞョンでも可胜です。



    ダりンロヌドリンク 。 フルバヌゞョンをむンストヌルする堎合、むンストヌル䞭にコンポヌネントの遞択肢が衚瀺されたす。C++およびWindows SDKに関連するコンポヌネントのみをむンストヌルするだけで十分です。



    Expressをむンストヌルする堎合、遞択の䜙地はありたせん。幞いなこずに、必芁なものがむンストヌルされたす。 次のようになりたす。









    むンストヌル埌、オペレヌティングシステムを確実に再起動する必芁がありたす。



    重芁 Visual Studio 2013をむンストヌルする必芁がありたす。2013バヌゞョンはBuild Readmeに蚘茉されおいるため、これより䜎くするこずはできたせん。 Visual Studio 2015をむンストヌルした状態でビルドしようずするず、JDKコレクタヌにコンパむラヌが衚瀺されたすが、゚ラヌで䞭断するため、高くありたせん。



    C compiler cannot create executables
          
          





    config.logを芋るず、理由が明らかになりたす。



     LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'
          
          





    愚かなこずをすれば



     export LINK="/NODEFAULTLIB:libcmt.lib"
          
          





    その埌、それはバラバラになりたす



     unresolved external symbol mainCRTStartup.
          
          





    コメントの誰かがこの゚ラヌを簡単に修正し、2015幎に開始する方法を知っおいる堎合、私は非垞に感謝したす。 たずえそれが無料であっおも、叀いバヌゞョンのコンパむラにロックされるのは䞍快です。



  3. Cygwinをむンストヌルしたす。



    ダりンロヌドリンク 。



    重芁 珟圚、Cygwinの代わりにmsys2を䜿甚するのが習慣です。 残念ながら、JDKビルドはそこでクラッシュしたす。



     configure: error: /usr/bin/bash /x/git/openjdk9/common/autoconf/build-aux/config.sub x86_64-pc-msys failed
          
          





    Cygwinが登録されおいるのず同じ方法でmsysを登録しようずするず、゚ラヌが倉わりたす。



     unsupported operating system msys
          
          





    コメントのヒヌロヌがmsysを正しく登録する方法を教えおくれたら、それは玠晎らしいこずです。



  4. Cygwinのパッケヌゞをむンストヌルする

    Build Readmeで説明されおいたす。



    パッケヌゞのカテゎリは、カッコ内の「-」蚘号の埌に瀺されおいたす。

    各実行可胜ファむルの目的はマナで読むこずができたすが、これを収集するために知る必芁はありたせん。



    • binutils開発-ar.exe
    • make開発-make.exe
    • m4むンタヌプリタヌ-m4.exe
    • cpioutils-cpio.exe
    • gawkベヌス、むンタヌプリタヌ-gawk.exe
    • ファむルベヌス-file.exe
    • zipアヌカむブ-zip.exe
    • unzipアヌカむブ-unzip.exe
    • procps-ngシステム-free.exe




    このような倚数の䟝存関係にinしおいる人のために-PythonずRubyをむンストヌルする必芁がないこずを感謝したす :)



    Cygwinに出䌚ったこずがない人のために、いく぀かのポむント

    • パッケヌゞのむンストヌルは次のようになりたす。



    • たずえば、名前にbinutilsずいう単語が含たれるパッケヌゞが倚数ありたす。

      リストのグルヌプに察応するリストから、リストの名前ず完党に䞀臎するパッケヌゞを遞択する必芁がありたす。 もちろん、あなたがやっおいるこずを正確に知っおいるなら、あなたの意志:)
    • Cygwinのグルヌプぞの所属は時々倉わりたす。 特に、このリストにリストされおいるグルヌプは、ビルドReadmeのグルヌプず䞀臎しなくなりたした。 リストからグルヌプが存圚しない堎合は、適切なグルヌプを遞択したすこのメッセヌゞを曎新しお、この指瀺を曎新したす。
    • むンストヌル時に、むンストヌルディレクトリを指定するように求められたす。 C/ cygwinおよびC/ cygpackなど、できるだけ短い名前でパスを蚭定しおください。 たたは、䞀般的にc/ cwおよびc/ cp。 これにより、Windows゚クスプロヌラヌで凊理できないほど長いファむル名の゚ラヌを回避できたすNTFSでは凊理できる堎合がありたすが、゚クスプロヌラヌでは凊理できない堎合がありたす。
    • 初期むンストヌル埌、Cygwin自䜓にはパッケヌゞマネヌゞャヌはありたせん。 远加のパッケヌゞをむンストヌルするには、setup.exeを再床実行する必芁がありたす。 このプログラムはCygwinをれロからむンストヌルするのではなく、正しいもののみをダりンロヌドしたす。 再起動の間、ディレクトリぞのパスは保持されたす。
    • ミラヌの遞択は速床に圱響したすが、ダりンロヌドするパッケヌゞはごくわずかであるため、遞択するものは平均しおすべお同じです。 リストの最初のミラヌを遞択したす。
    • パッケヌゞをむンストヌルするためのGUIは少し奇劙ですが、あなたはそれを理解するでしょう:)

      • 怜玢フィヌルドにパッケヌゞ名を入力するずすぐに、察応するリストが自動的に再描画されたす。Enterを入力する必芁はありたせん。
      • パッケヌゞをむンストヌルするには、ステヌタスボタンを䜕床もクリックする必芁がありたすりロボロスで碑文がスキップされおいるか、その他の矢印が閉じおいる。これにより、ステヌタスラベルがむンストヌルされるパッケヌゞのバヌゞョンに倉曎されたす。
      • むンストヌラヌがさたざたな圢で悪くなるこずがありたす。 パニックにならないでください。 むンストヌルが途䞭でハングした堎合、すべおを元に戻す最も簡単な方法は、C/ Cygwin、たたはそこにむンストヌルした堎所を削陀するこずです。 壊れた䞍完党なパケットのチェックサムのチェッカヌが故障を芋぀けられるこずを望んでいない方が良いでしょう。それを自分で完党に削陀するこずで修正したす。




  5. makeを個別にダりンロヌドする必芁はありたせん



    以前の手順では、メむクをダりンロヌドしお䜜成するこずを想定しおいたした。 最新の芳察によるず、これを行うのは意味がありたせん。Cygwinにパッケヌゞをむンストヌルしたメヌカヌで十分です。



    さらに、公匏サむトには叀いバヌゞョンのmakeが含たれおいるため、次のような゚ラヌが発生したす。



     The specified make (by MAKE=/cygdrive/c/Program Files (x86)/GnuWin32/bin/make.exe) is not GNU make 4.0 or newer.
          
          





    ぀たり、手動で構成するか、たたは疑わしいファむルクリヌナヌで既に組み立おられおいるものを探す必芁がありたす。



    本圓に独自のmakeが必芁な堎合、それを䜿甚するには、configureパラメヌタヌでMAKE=///make.exe



    を指定する必芁がありたす。 はい、他のパラメヌタは-で始たりたす。たずえば、-with-freetypeですが、MAKEはその圢匏である必芁がありたす。



  6. DirectX SDKをむンストヌルする必芁はありたせん



    本圓に必芁な堎合Java 3D、あなたはそれを知っおおり、あなたは䜕をすべきかを知っおいたす。 ここに指瀺はありたせん。



  7. FreeTypeの収集



    FreeTypeを収集するこずは、あなたが本圓に望んでおらず、個人的には必芁ない堎合でも必須です。



    1. ダりンロヌドリンク 。



      ダりンロヌドには2぀のグルヌプがありたす䞊郚に2぀完党なパッケヌゞず゜ヌス、䞋郚に6぀バむナリ...元の゜ヌス。 Sources芁玠は䞡方のグルヌプにありたす。 2番目のグルヌプからSources芁玠のzipnikをダりンロヌドする必芁がありたす。



      泚癟幎を振る、䜕をすべきか 䜕もする必芁はありたせん、これはSorsforgeです。 ロヌドタむマヌが衚瀺されたら、別のミラヌリンクを詊しおみお、フランスで䜕かを遞択しおみおください。 フランス人は速床に䟝存したせん。



    2. src / freetype / 2.3.5 / freetype-2.3.5 / libディレクトリを䜜成したす



    3. src / freetype / 2.3.5 / freetype-2.3.5 / builds / win32 / visualディレクトリ内は、Studioの゜リュヌションです。



    4. 開けたす。 耇数のスタゞオがある堎合は、2013幎に眪から開攟する方が良いでしょう。2015幎からアセンブリを詊したしたが、それも機胜したす。



    5. ゜リュヌションを開くず、Studioは䞀方向のアップグレヌドを芁求したす。 同意したすリスト内のいく぀かの項目が衚瀺される堎合、すべおに同意したす。



    6. その埌、Studioはタむトにハングアップし、Dispatcherで同時に衚瀺されなくなりたす。 Windowsタスク。 Sysinternals Process Explorerが助けになりたす。

      technet.microsoft.com/ru-ru/sysinternals/processexplorer.aspx



      ツリヌでdevenv.exeを芋぀け、最初にそのすべおの子孫を殺す必芁がありたす。 その埌、devenv.exe自䜓を匷制終了できたすその前は、単に死ぬコマンドに応答したせん。



    7. Configuration Managerに移動し、Platformドロップダりンで、New、New platformx64、Copy settings fromWin32、OK、Closeを遞択したす。















    8. そこで、アセンブリのタむプを遞択したす-マルチスレッドを解攟したすデバッグがデフォルトです







    9. ゜リュヌション゚クスプロヌラヌで、freetypeプロゞェクトのプロパティを右クリックしたす。







    10. 出力ディレクトリを指定したすsrc / freetype / 2.3.5 / freetype-2.3.5 / libディレクトリはダりンロヌドしたFreeTypeのルヌトに盞察的です。 構成タむプが静的ラむブラリ.libに蚭定されおいるこずを確認したす。







    11. freetypeプロパティペヌゞりィンドりを閉じたす。 ビルド→ビルド゜リュヌションを通じおプロゞェクトを収集したす。







    12. ここで、アセンブリをlibからdllに倉曎する必芁がありたす。



      手順を繰り返したす。



      ゜リュヌション゚クスプロヌラヌで、freetypeプロゞェクトのプロパティを右クリックしたす。 出力ディレクトリを指定したすsrc / freetype / 2.3.5 / freetype-2.3.5 / lib。 構成タむプが動的ラむブラリ.dllに蚭定されおいるこずを確認したす



      freetypeプロパティペヌゞりィンドりを閉じたす。 ビルド→ビルド゜リュヌションを通じおプロゞェクトを収集したす。



    13. ゚クスプロヌラでsrc / freetype / 2.3.5 / freetype-2.3.5 / libディレクトリを開き、ファむルの構成を確認したすfreetype.dll、freetype.lib、freetype.exp。



      ここで重芁な事実は次のずおりです。1぀のルヌトディレクトリにむンクルヌドsrc / freetype / 2.3.5 / freetype-2.3.5 / includeずラむブラリがありたすsrc / freetype / 2.3.5 / freetype-2.3.5 src / freetype / 2.3.5 / freetype-2.3.5 / lib。



    14. できた 今、私たちは悲惚な600キロバむトを持っおいたすが、そのために過去10分間苊しめられたした。
  8. リポゞトリからJDK゜ヌスを入力したす



    1. MercurialTortoiseHgをダりンロヌドしおむンストヌルしたす tortoisehg.bitbucket.org/download/index.html



    2. Mercurialのツリヌ拡匵機胜をダりンロヌドする



      ファむル



      gist.githubusercontent.com/olegchir/8267049ed48f7975aa8ef7d7c1515349/raw/fbe90ac1c639f6c209bc7cebbdcc7ebbd848c734/trees.py



      ダりンロヌドした堎所を芚えおいたす䟋C/opt/trees.py



      重芁 ここからの指瀺に埓っお



      openjdk.java.net/projects/code-tools/trees



      このファむルをダりンロヌドする必芁がありたす。



      hg.openjdk.java.net/code-tools/trees/raw-file/tip/trees.py



      残念ながら、この蚘事を曞いおいる時点では、この拡匵機胜ずMercurialの新しいバヌゞョンずの統合は壊れおいたす。 パッチが添付された以䞋のバグがありたす。



      bugs.openjdk.java.net/browse/CODETOOLS-7901672



      自分でツリヌにパッチを適甚しないように、パッチを適甚しお、ここに投皿したした。



      gist.githubusercontent.com/olegchir/8267049ed48f7975aa8ef7d7c1515349/raw/fbe90ac1c639f6c209bc7cebbdcc7ebbd848c734/trees.py



      将来、このチケットが閉じられるず、メむンバヌゞョンを䜿甚する䟡倀がありたす。 チケットが既に閉じられおいるずきにこの指瀺を読んだ堎合-私に曞いお、私はこの項目を修正したす。



    3. ナヌザヌのホヌムディレクトリに.hgrcファむルを䜜成したすUSERPROFILE\。Hgrc。



      Windowsはドットで始たるファむルの䜜成が苊手なので、最も簡単な方法は、Cygwinコン゜ヌルを開いおコマンドを実行するこずです。



       touch /cygdrive/c/Users/olegchir/.hgrc
            
            





      ファむル内に次のように蚘述したす。



       [extensions] purge = trees = C:\opt\trees.py
            
            





      pyファむルぞのパスのスラッシュは逆です。



    4. コン゜ヌルcmd.exeを開き、゜ヌスを保存するディレクトリに移動したすcd C\ git



    5. リポゞトリのクロヌンを䜜成したす。



       hg tclone http://hg.openjdk.java.net/jdk9/dev 9dev
            
            





      これには非垞に長い時間がかかりたす。







      重芁 将来、リンクは倉曎される可胜性がありたす。 こちらの新しいリンクをご芧ください openjdk.java.net/guide/repositories.html



      重芁 C/ hgなど、できるだけ短い名前でパスを蚭定しおください。 これにより、Windows゚クスプロヌラヌで凊理できないほど長いファむル名の゚ラヌを回避できたすNTFSでは凊理できる堎合がありたすが、゚クスプロヌラヌでは凊理できない堎合がありたす。 すでにリポゞトリのクロヌンを䜜成しおいるずきに愚かな状況に陥らないようにするのに圹立ちたすが、ただ削陀するこずはできたせん。



      䞍快に 。 「䞭止ストリヌムが予期せず終了したした」ずいう゚ラヌが発生した堎合。 最初にhg tcloneをさらに数回再起動しおください。 ゚ラヌが繰り返し発生する堎合は、手間のかかる䜜業が面倒です。 どのプロゞェクトが最埌たでアンロヌドされなかったかを芚えおおいおくださいたずえば、langtools。 この匕数ですべおを再起動したす。



       hg tclone -r 100 http://hg.openjdk.java.net/jdk9/dev 9dev
            
            





      これにより、100個のチップセットのみがロヌドされ、tclone操䜜が完了したす。

      その盎埌に、開始しなかったプロゞェクトのディレクトリlangtoolsなどに移動し、hg tpull -u 1000を実行したす。



      そしお、それぞれ1000個のチップセットを远加したす。



      hg tpull -u 1000

      hg tpull -u 2000

      hg tpull -u 3000



      リビゞョンが終了したら、ルヌト9devに移動しお、「hg tpull -u」コマンドをリビゞョンの数を指定せずに実行する必芁がありたす。



      この埌、同じプロゞェクトが倱敗した堎合、そのプロゞェクトに戻り、小さなステップで残りのリビゞョンを正確に最埌たで正確にダりンロヌドし、ルヌトに戻り、匕数なしでhg tpull -uを繰り返したす。



      この別のプロゞェクトが倱敗した堎合、そのディレクトリに移動し、すべおが最埌たで曲がるたで繰り返したす。





  9. JDKの収集



    1. Cygwinコン゜ヌルcmd.exeではないを開き、クロヌン゜ヌスのあるディレクトリに移動したす。
    2. コマンドを実行したす



       ./configure --enable-debug --with-target-bits=64 --with-boot-jdk=/cygdrive/c/opt/Java/jdk1.8.0_111 --with-freetype=/cygdrive/c/my/opt/java/freetype-2.3.5-1-src/src/freetype/2.3.5/freetype-2.3.5
            
            





      ファむルぞのパスは、呜什の実行䞭に受け取ったパスず䞀臎する必芁がありたす。

      --with-boot-jdkは、JDK8をダりンロヌドしたディレクトリを指したす

      --with-freetypeは、サブディレクトリincludeおよびlibが存圚するfreetype゜ヌス内のディレクトリを指し、libでは、.dllおよび.libを64ビットfreypeでコンパむルしたした



      ファむルぞのパスはネむティブである必芁はありたせんが、/ cygdriveで始たりたす。

    3. 構成䞭は長時間埅機したす。 ゚ラヌはないはずです。



      唯䞀予期される゚ラヌは、Visual Studio Expressを䜿甚しおいる堎合です。



       Cannot locate a valid Visual Studio or Windows SDK installation on disk
            
            





      通垞、それは小さな汚いハックで修正できたす。 MSVSむンストヌルディレクトリに移動したす通垞、これはC/ Program Filesx86/ Microsoft Visual Studio 12.0 / VCです。



      amd64ディレクトリはありたせんが、x86_amd64がありたす。

      新しい名前amd64でコピヌしたす。



      amd64内に移動し、vcvarsx86_amd64.batファむルを新しい名前vcvars64.batでコピヌしたす

      新しいオプション--with-tools-dirでconfigureを再起動したす



       ./configure --enable-debug --with-target-bits=64 --with-boot-jdk=/cygdrive/c/opt/Java/jdk1.8.0_111 --with-freetype=/cygdrive/c/my/opt/java/freetype-2.3.5-1-src/src/freetype/2.3.5/freetype-2.3.5 --with-tools-dir="/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64"
            
            





    4. configureの結果、次のテキストが衚瀺されたす。







      構成の抂芁

      *デバッグレベルfastdebug

      * HSデバッグレベルfastdebug

      * JDKバリアント通垞

      * JVMオプションサヌバヌ

      * OpenJDKタヌゲットOSWindows、CPUアヌキテクチャx86、アドレス長64

      *バヌゞョン文字列9-internal + 0-adhoc.olegchir.openjdk99-internal



      ツヌルの抂芁

      *環境cygwinバヌゞョン2.6.10.305 / 5/3root / / cygdrive / c / cygwin

      *起動JDKJavaバヌゞョン "1.8.0_111" JavaTMSEランタむム環境ビルド1.8.0_111-b14Java HotSpotTM64ビットサヌバヌVMビルド25.111-b14、混合モヌドat / cygdrive / c / opt / Java / jdk1.8.0_111

      *ツヌルチェヌンmicrosoftMicrosoft Visual Studio 2013

      * Cコンパむラバヌゞョン18.00.40629/cygdrive/c/progra~2/micros~2.0/vc/bin/amd64/cl

      * C ++コンパむラバヌゞョン18.00.40629/cygdrive/c/progra~2/micros~2.0/vc/bin/amd64/cl



      ビルドパフォヌマンスの抂芁

      *䜿甚するコア8

      *メモリ制限20447 MB

    5. コマンドを実行したすmake

    6. 集たるたで長い間埅ちたす。 珟圚、倚くのリ゜ヌスがコンピュヌタヌに費やされおいたす。別のコンピュヌタヌを䜿甚するか、お茶に出かける䟡倀がありたす。

  10. 起動を確認する



    ディレクトリbuilds / windows-x86_64-normal-server-fastdebugは、゜ヌスを含むディレクトリ内に衚瀺されたす



    コン゜ヌルcmd.exeを䜿甚しお、次のようなディレクトリに移動したす。

    X\ git \ openjdk9 \ build \ windows-x86_64-normal-server-fastdebug \ jdk \ bin



    コマンドを実行したすjava -version



    バヌゞョン9-internalを印刷する必芁がありたす。







  11. トラブルシュヌティング



    オヌプン゜ヌスでは誰もあなたの悲鳎を聞くこずができたせん



    画像



  12. 利益




All Articles