繁体   English   中英

如何为 openJDK11 构建 hsdis-amd64.dll?

[英]How can I build hsdis-amd64.dll for openJDK11?

我正在做一门关于 Java 性能优化的课程,但我一直在尝试下载所有必需的文件,以便我可以构建这个 DLL hsdis-amd64.dll。 它应该允许我在本课程中使用 JITWatch 并了解 JIT。

无论如何,此处的说明说要为您的确切 JDK 下载热点。 我的 JDK 是 11 构建 11+28。

这是openJDK 存储库,其中

  1. 我应该看看openJDK/MYVERSION/hotspot
  2. 点击标签,选择我的确切版本
  3. 点击bz2下载
  4. 之后我应该修补我刚刚下载的热点hsdiss库然后
  5. 重新制作。
  6. 将输出的 DLL 扔进我的 java/bin/

我看到由于许可证问题无法预构建 DLL。 知道人们如何将 JITWatch 与 openJDK11 一起使用吗?

我最近根据这里的帖子构建了它: https : //dropzone.nfshost.com/hsdis/

  1. 安装 Cygwin。 在 Select Packages 屏幕上,添加以下包(展开 All/Devel 类别,搜索包的名称,并将包的 New 状态从 Skip 更改为最新的非测试版本):

    gcc-core make mingw64-i686-gcc-core(仅 hsdis-i386.dll 需要) mingw64-x86_64-gcc-core(仅 hsdis-amd64.dll 需要)

  2. 在终端 shell 中运行 Cygwin

  3. 将 GNU binutils 2.32 下载到您的 Cygwin 主目录,并使用 tar xvf binutils-2.32.tar.xz 将其解压缩到您可以从 cygwin 路径轻松访问的位置。

  4. 切换到JDK/src/utils/hsdis目录

  5. 像这样构建 64 位 Windows:

    make OS=Linux MINGW=x86_64-w64-mingw32 BINUTILS=/cygdrive/c/cygwin/binutils-2.32

  6. 如果上面的命令失败(因为它可能与一些未修补的 JDK 版本一样):

    compress.c:(.text+0x5b): 未定义对 `inflateInit_' 的引用

编辑 Makefile,查找 libiberty.a 并将库列表更改为包含 libz.a,如下所示:

   LIBRARIES =  $(TARGET_DIR)/bfd/libbfd.a \
        $(TARGET_DIR)/opcodes/libopcodes.a \
        $(TARGET_DIR)/libiberty/libiberty.a \
        $(TARGET_DIR)/zlib/libz.a

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM