1

我正在尝试为工作构建旧版本的 JDK,并且在运行make dev-sanity. 好吧,有几个障碍,但我已经设法绕过所有障碍,除了这个。具体来说,我正在尝试从此处的源 JAR 构建 JDK 1.6u17 的 64 位版本:

TL;DR:我正在从源代码构建 JDK6u17,但dev-sanitymake. 我在构建自述文件中列出了所有软件及其版本,所以我认为这是一个环境变量问题。

软件版本信息

  • 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是 GNU make, version 的 Cygwin 版本3.80-1,它支持 DOS 路径。我还尝试了官方存储库中的 3.81 和 3.82 版本,因为它们没有 DOS 路径支持,所以它们不起作用,以及带有 DOS 路径支持的修补 3.81 和 3.82 版本,它们都给了我相同的错误输出为 3.80。

环境变量

  • PATH- 包括编译器工具、引导程序 JDK、来自 Cygwin 的 UNIX 工具,然后是我路径上的所有其他东西,按此顺序。
  • LIBSetEnv.cmd /X64-在 Microsoft SDK 的文件夹中设置为用户环境变量Bin以获取值
  • INCLUDESetEnv.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 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,而且似乎 fastdebug jar 不再适用于 6u17。如果有人有 6u17 fastdebug 链接,如果这意味着我不需要编译任何东西,我也会接受。

如果有人想要-d输出,请告诉我,我会把它贴在 pastebin 或其他东西上。

4

0 回答 0