我正在尝试在我的笔记本电脑32位Windows中构建hsdis.dll。我阅读了http://dropzone.nfshost.com/hsdis.htm条说明,并了解到我必须遵循这些步骤。我看到我必须使用mingw64-i686-gcc-core。我按照步骤操作,但总是发现这个错误。
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 :(得分:0)
以下是帮助我构建它的步骤(x64版本,x86应该几乎相同):
hsdis
来源
bintuils-2.26.tar.gz
包
tar -xzvf ./binutils-2.26.tar.gz
mingw64-x86_64-gcc-core
,x86为mingw64-i686-gcc-core
,diffutils
和make
; hsdis
目录; 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)
1}} target并追加到末尾-lz -L$(TARGET_DIR)/zlib
,然后再次运行build命令; hsdis-amd64.dll
中找到x64的库hsdis\build\Linux-amd64\
,或者在hsdis-i386.dll
中找到x86的hsdis\build\Linux-i586\
。