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

问题描述 投票:0回答:1

我正在上一门Java性能优化课程,我一直试图下载所有必需的文件,以便可以构建此DLL hsdis-amd64.dll。本来应该允许我使用JITWatch并学习有关JIT的知识。

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

这是openJDK repository,其中

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

我看到由于许可证问题,无法预先构建DLL。知道人们如何在openJDK11中使用JITWatch吗?

java jit
1个回答
0
投票

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

  1. 安装Cygwin。在“选择软件包”屏幕上,添加以下软件包(展开“所有/开发”类别,搜索软件包的名称,并将软件包的“新状态”从“跳过”更改为最新的非测试版本):

    gcc-core使mingw64-i686-gcc-core(仅适用于hsdis-i386.dll)mingw64-x86_64-gcc-core(仅适用于hsdis-amd64.dll)

  2. 在终端外壳中运行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,如下所示:

  7.    LIBRARIES =  $(TARGET_DIR)/bfd/libbfd.a \
            $(TARGET_DIR)/opcodes/libopcodes.a \
            $(TARGET_DIR)/libiberty/libiberty.a \
            $(TARGET_DIR)/zlib/libz.a
    
© www.soinside.com 2019 - 2024. All rights reserved.