仕事用に古いバージョンの JDK をビルドしようとしていますが、実行中に障害が発生しましたmake dev-sanity
。さて、いくつかの障害がありましたが、これを除いてすべて回避できました。具体的には、次のソース JAR から JDK 1.6u17 の 64 ビット バージョンをビルドしようとしています。
TL;DR : ソースから JDK6u17 をビルドしていますが、
dev-sanity
ターゲットでエラーが発生していmake
ます。ビルドの readme にすべてのソフトウェアとそのバージョンが記載されているので、環境変数の問題だと思います。
ソフトウェア バージョン情報
- Windows 7、amd64 プロセッサ
cl.exe
バージョンは14.00.50727.762
link.exe
バージョンは8.00.50727.762
- Java ブートストラップは JDK 1.7u15 です
msvcrt.dll
バージョンは7.0.7601.17744
- Cygwin が現在のバージョンです
make
3.80-1
DOS パスをサポートするGNU make バージョン の Cygwin ビルドです。また、公式リポジトリからバージョン 3.81 と 3.82 を試しましたが、これらは DOS パスをサポートしていないため機能しません。また、DOS パスをサポートする 3.81 と 3.82 バージョンにパッチを適用しましたが、どちらも同じ誤った出力を出しました。 3.80として。
環境変数
PATH
- コンパイラ ツール、ブートストラップ JDK、Cygwin の UNIX ツール、そして既にパス上にあるその他すべてをこの順序で含めます。LIB
SetEnv.cmd /X64
- Microsoft SDK のBin
フォルダーを使用してユーザー環境変数として設定し、値を取得しますINCLUDE
SetEnv.cmd /X64
- Microsoft SDK のBin
フォルダーを使用してユーザー環境変数として設定し、値を取得しますALT_COMPILER_PATH
- に設定C:\PROGRA~1\MICROS~2\Windows\v6.0\VC\Bin\x64\
(スペースの問題を回避するためにショートパスを使用)ALT_BOOTDIR
-C:\PROGRA~1\Java\JDK17~1.0_1\
(JDK 7 パス)ALT_MSVCRT_DLL_PATH
-C:\Windows\System32\
(msvcrt.dll ファイルは System32 フォルダーにあります)ALT_DXSDK_PATH
- のショートパスに設定するだけDXSDK_DIR
Cygwin を開いて、次を使用して make プロセスを開始できます。
make dev-sanity ARCH_DATA_MODEL=64 ARCH=amd64
しかし、次の出力でエラーになります。
$ cd [jdk-src-root]/control/make
$ make dev-sanity ARCH_DATA_MODEL=64 ARCH=amd64
cd ../../control/make
make sanity DEV_ONLY=true
make[1]: Entering directory `/cygdrive/c/Users/bsaltz/jdk6u17src/control/make'
make[2]: Entering directory `/cygdrive/c/Users/bsaltz/jdk6u17src/deploy/make'
../make/common/Defs.gmk:52: /make/common/Defs.gmk: No such file or directory
make[2]: -p: Command not found
make[2]: -p: Command not found
../make/common/Defs-windows.gmk:9: /make/common/Defs-windows.gmk: No such file or directory
../../j2se/make/common/Defs-windows.gmk:16: /Defs.gmk: No such file or directory
/bin/sh: - : invalid option
Usage: /bin/sh [GNU long option] [option] ...
/bin/sh [GNU long option] [option] script-file ...
[ ... More /bin/sh usage output ]
/bin/sh: - : invalid option
Usage: /bin/sh [GNU long option] [option] ...
/bin/sh [GNU long option] [option] script-file ...
[ ... More /bin/sh usage output ]
/bin/sh: #define: command not found
/bin/sh: {print $3}: command not found
/bin/sh: -n: command not found
/bin/sh: - : invalid option
/bin/sh: - : invalid option
/bin/sh: -n: command not found
../../j2se/make/common/shared/Sanity.gmk:97: /Sanity-Settings.gmk: No such file or directory
make[2]: -p: Command not found
make[2]: *** No rule to make target `/Sanity-Settings.gmk'. Stop.
make[2]: Leaving directory `/cygdrive/c/Users/bsaltz/jdk6u17src/deploy/make'
make[1]: *** [deploy-sanity] Error 2
make[1]: Leaving directory `/cygdrive/c/Users/bsaltz/jdk6u17src/control/make'
make: *** [dev-sanity] Error 2
私が理解できることから、コマンドが適切に実行されていないように見えるため、環境変数がどこかに不良または欠落しているように見えます。おそらくいくつかの変数が解決されていません。
ローカル変数でデバッグ jar を取得するためにこれを行っていることに注意してください。6u17 では fastdebug jar は使用できなくなったようです。誰かが 6u17 fastdebug リンクを持っていれば、何もコンパイルする必要がないという意味であれば、私もそれを受け取ります。
出力が必要な場合-d
はお知らせください。ペーストビンなどに貼り付けます。