Я прохожу курс по оптимизации производительности Java, и я застрял, пытаясь загрузить все необходимые файлы, чтобы я мог создать эту DLL hsdis-amd64.dll. Предполагается, что это позволит мне использовать JITWatch и узнать о JIT во время этого курса.
Во всяком случае, инструкции здесь говорят, что нужно загрузить точку доступа именно для вашего JDK. У меня JDK 11 сборка 11+28.
Это репозиторий openJDK, где
Я вижу, что библиотеки DLL не могут быть предварительно собраны из-за проблем с лицензией. Есть идеи, как люди используют JITWatch с openJDK11?




Недавно я построил его на основе сообщения отсюда: https://dropzone.nfshost.com/hsdis/
Установите Cygwin. На экране «Выбрать пакеты» добавьте следующие пакеты (разверните категорию «Все/Разработка», найдите имя пакета и измените статус пакета «Новый» с «Пропустить» на «Последняя нетестовая версия»):
gcc-ядро сделать mingw64-i686-gcc-core (требуется только для hsdis-i386.dll) mingw64-x86_64-gcc-core (требуется только для hsdis-amd64.dll)
Запустите Cygwin в терминальной оболочке
Загрузите GNU binutils 2.32 в свой домашний каталог Cygwin и извлеките его с помощью tar xvf binutils-2.32.tar.xz в место, к которому вы можете легко получить доступ из путей cygwin.
Перейдите в каталог JDK/src/utils/hsdis.
Соберите 64-битную Windows следующим образом:
make OS=Linux MINGW=x86_64-w64-mingw32 BINUTILS=/cygdrive/c/cygwin/binutils-2.32
Если приведенная выше команда не работает (как это может быть с некоторыми неисправленными сборками 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
Гений. Спасибо, что написали этот ответ. Я попробую это как можно скорее и вернусь к этой теме!