Как мне собрать hsdis-amd64.dll для 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?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
865
1

Ответы 1

Недавно я построил его на основе сообщения отсюда: https://dropzone.nfshost.com/hsdis/

  1. Установите Cygwin. На экране «Выбрать пакеты» добавьте следующие пакеты (разверните категорию «Все/Разработка», найдите имя пакета и измените статус пакета «Новый» с «Пропустить» на «Последняя нетестовая версия»):

    gcc-ядро сделать 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, например:

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

Гений. Спасибо, что написали этот ответ. Я попробую это как можно скорее и вернусь к этой теме!

chrips 10.10.2019 20:07

Другие вопросы по теме