我正在尝试构建一个旧版本的JDK用于工作,并且在运行make dev-sanity
时遇到了障碍。好吧,有几个路障,但我设法绕过所有这些但是这个。具体来说,我正在尝试从源JAR构建一个64位版本的JDK 1.6u17:
TL; DR :我正在从源代码构建JDK6u17,我在
dev-sanity
的{{1}}目标中遇到错误。我在构建自述文件中列出了所有软件及其版本,因此我认为这是一个环境变量问题。
软件版本信息
make
版本为cl.exe
14.00.50727.762
版本为link.exe
8.00.50727.762
版本为msvcrt.dll
7.0.7601.17744
是GNU make的Cygwin构建版本make
,它支持DOS路径。我也尝试过官方存储库中的版本3.81和3.82,因为它们没有DOS路径支持而无法工作,以及修补了3.81和3.82版本的DOS路径支持,这两个版本都给了我相同的错误输出为3.80。环境变量
3.80-1
- 包括编译工具,bootstrap JDK,Cygwin的UNIX工具,以及我路径上已经存在的所有其他内容,按顺序。PATH
- 使用Microsoft SDK的LIB
文件夹中的SetEnv.cmd /X64
设置为用户环境变量以获取值Bin
- 使用Microsoft SDK的INCLUDE
文件夹中的SetEnv.cmd /X64
设置为用户环境变量以获取值Bin
- 设置为ALT_COMPILER_PATH
(使用短路径以避免空格问题)C:\PROGRA~1\MICROS~2\Windows\v6.0\VC\Bin\x64\
- ALT_BOOTDIR
(JDK 7路径)C:\PROGRA~1\Java\JDK17~1.0_1\
- ALT_MSVCRT_DLL_PATH
(msvcrt.dll文件位于我的System32文件夹中)C:\Windows\System32\
- 只需设置为ALT_DXSDK_PATH
我可以打开Cygwin并使用以下命令启动制作过程:
DXSDK_DIR
但随后出现以下输出错误:
make dev-sanity ARCH_DATA_MODEL=64 ARCH=amd64
从我可以看出,看起来我可能在某个地方有一个糟糕或缺失的环境变量,因为看起来命令没有正确执行,也许某些变量没有被解析。
请注意,我们这样做是为了获得带有局部变量的调试jar,似乎快速调试罐不再适用于6u17。如果有人有6u17 fastdebug链接,如果这意味着我不需要编译任何东西,我也会接受它。
如果有人想要$ 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
输出,请告诉我,我会把它贴在pastebin上。