2015-11-24 3 views
3

Я пытаюсь построить hsdis.dll в моем ноутбуке 32-битной Windows. Я прочитал инструкции http://dropzone.nfshost.com/hsdis.htm и узнал, что мне придется следовать этим шагам. Я видел, что мне нужно использовать mingw64-i686-gcc-core. Я выполнил шаги, но всегда обнаружил эту ошибку.Как построить hsdis.dll для Windows 32-бит?

make[2]: i686-w64-mingw32: Command not found 
Makefile:246: recipe for target 'libiberty.a' failed 
make[2]: *** [libiberty.a] Error 127 
make[2]: Leaving directory '/home/User/hsdis/build/Linux-i586/libiberty' 
Makefile:8045: recipe for target 'all-libiberty' failed 
make[1]: *** [all-libiberty] Error 2 
make[1]: Leaving directory '/home/User/hsdis/build/Linux-i586' 
Makefile:192: recipe for target 'build/Linux-i586/bfd/libbfd.a' failed 
make: *** [build/Linux-i586/bfd/libbfd.a] Error 2 

Я также хотел бы знать, как использовать директиву PrintAssembly, потому что я хотел, чтобы увидеть код сборки, класса Java.

Я уже видел другие сообщения здесь, но никто из них не помог.

Заранее спасибо

+0

Я также не смог построить 64-разрядную версию на своем ноутбуке. – leventov

+0

Какая ошибка вы получили? – sdafad

ответ

0

Вот шаги, которые помогут мне построить его (x64 версии x86 должна быть почти такой же):

  • скачать и распаковать последние hsdis источники, как описано в руководство по эксплуатации от http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/tags;
  • скачать последнюю версию bintuils-2.26.tar.gz пакета от http://mirror.tochlab.net/pub/gnu/binutils/;
  • скопируйте его в свой домашний каталог Cygwin и распаковать его из терминала Cygwin (это очень важно, иначе могут возникнуть проблемы с разрешениями): tar -xzvf ./binutils-2.26.tar.gz
  • установить следующие пакеты Cygwin: mingw64-x86_64-gcc-core для x64 или mingw64-i686-gcc-core для x86, diffutils и make;
  • перейдите на страницу hsdis;
  • для библиотеки x64 построить с помощью команды: make OS=Linux MINGW=x86_64-w64-mingw32 'AR=x86_64-w64-mingw32-ar' BINUTILS=~/binutils-2.26 CONFIGURE_ARGS="--host=x86_64-w64-mingw32" для библиотеки x86 построить с помощью команды: make OS=Linux MINGW=i686-w64-mingw32 'AR=i686-w64-mingw32-ar' BINUTILS=~/binutils-2.26 CONFIGURE_ARGS="--host=i686-w64-mingw32"
  • если у вас есть ошибки с неопределенными ссылками на zlib (т.е. build/Linux-amd64/bfd/libbfd.a(compress.o):compress.c:(.text+0x7e): undefined reference to inflate), изменить Makefile в hsdis: найти строку $(CC) $(OUTFLAGS) $(CPPFLAGS) $(CFLAGS) $(SOURCE) $(DLDFLAGS) $(LIBRARIES) для $(TARGET) и добавьте в конец -lz -L$(TARGET_DIR)/zlib, затем снова запустите команду сборки;
  • после этого вы должны найти библиотеку hsdis-amd64.dll в hsdis\build\Linux-amd64\ для x64, или hsdis-i386.dll в hsdis\build\Linux-i586\ для x86.
+0

Ваш вопрос до последнего, о добавлении '-lz -L $ (TARGET_DIR)/zlib', похоже, не работает. Я получаю ту же ошибку. Полный вывод здесь http://pastebin.com/RdzPVs9z – leventov

+0

@leventov Как вы распаковали пакет binutils? Кажется, что ваш каталог binutils-2.26 пропускает некоторые файлы в соответствии с этим: 'gcc.exe: error: /home/leventov/binutils-2.26/bfd/doc/chew.c: Нет такого файла или каталога'. Это может произойти, если вы распаковываете архив под Windows напрямую, а не под терминал Cygwin. Оригинальный архив 'binutils' должен иметь этот файл. Также проверьте, правильно ли загружен ваш binutils. –

+0

Я распаковал binutils с помощью 7-Zip FM. – leventov

Смежные вопросы