JMP - Java Memory Profiler JMP logo

users_guide [ps]
users_guide [pdf]
users_guide [lyx]

Current version: 0.51.1

Other versions jmp-0.51.1.tar.gz
jmp/0.18, gtk/1.2 

jmp.deb [0.48, i386]
jmp.deb [0.42, amd64]
jmp.deb [0.48, ppc]
jmp.dll [0.50.1]
gtk+/2.2.0 Win32

Old versions

Robert Olofsson

  Building and running JMP under windows

14th Jan 2006 instructions created by Darryl L. Miles. 24th Jan 2006 minor updates by Robert Olofsson. Some instructions for building JMP with MINGW under CYGWIN on Win32 platform ============================================================================ The following software versions were used: * Sun JDK 1.5 Update 6 * GTK+ runtime 2.6.9 * CYGWIN 1.5.18 (Installer 2.510.2.2) * gcc 3.4.4 * binutils 2.16.91 Unfortunatly the GTK+ runtime is exactly that, a runtime, there is no SDK version distributed. So while the DLLs can be used using linking stage of the build we need to borrow CYGWINs version of GTKs header files to perform compilation. I also believe that GTK+ can be built with MSVC6 (according to some GTK+ websites this looks possible, however the header files for the CYGWIN version of GTK+ don't compile out of the box with MSVC6. It looks like GCCism's is visible in the header files, this is the main reason why I have not made the CONFIG_UI_GTK option work for the MSVC6 build). Installing GTK+2 Runtime ======================== Download and install the latest GTK stable branch runtime: Run the windows installer. This library is used at runtime and during linking of the jmp.dll under MINGW, the header files we need during complication come from the CYGWIN version (see /bin/cyggtk*dll). Are you sure you want to build your own? ======================================== A ready built jmp.dll binary is available at to save you the trouble of having to install CYGWIN in order to build JMP for yourself. You are still required to install the GTK+2 runtime in order to use it. If you still wish to build your own, read on. Installing CYGWIN ================= Download and install CYGWIN: During CYGWIN Install all the default packages plus: +Archive unzip +Editors (pick your favorite) +Devel gcc (and automatic dependancies) +Devel automake1.4 (and automatic dependancies) +Devel gettext-devel (and automatic dependancies) +Devel libtool (and automatic dependancies) +Devel make (and automatic dependancies) +Devel pkgconfig (and automatic dependancies) +Libs libXft (and automatic dependancies) Note: you also need the pango, atk and glib devel packages (not sure where they are located /robo). You should now be able to get a unix-like shell prompt up from CYGWIN. Building JMP ============ The autoconf scripts aren't cut out to build with the space character in the path. The default location for the Sun Java JDK is in "Program Files", if you run the ./configure as-is the test compile against the header is not quoted and the output Makefile does not have have correct escaped quoting around -I arguments to the compiler. Its just easier to make sure you can reach your JDK through a path that have no space character in it. $ ln -s "/cygdrive/c/Program Files/Java/jdk1.5.0_05" "/cygdrive/c/jdk" $ JAVA_HOME="/cygdrive/c/jdk" $ export JAVA_HOME $ tar -zxvf jmp-X.YY.tar.gz $ cd jmp-X.YY jmp-X.YY $ jmp-X.YY $ JAVA_HOME="/cygdrive/c/Program Files/Java/jdk1.5.0_05" jmp-X.YY $ export JAVA_HOME jmp-X.YY $ ./configure jmp-X.YY $ make jmp-X.YY $ java -Xrunjmp -classpath project\classes your.package.ClassName args This will build a cygjmp.dll, not very useful. Read on for how to build the real thing. Useful Shell Script =================== Run ./configure, then the environment should be ready to use the script below. You will have to update libs_flags to the place where you installed the gtk+ runtime. C:\Program Files\Common Files\GTK\2.0\bin is the default location, but check that it is correct for your setup. -------------------------------------------------------------------------------- cflags_flags=$(pkg-config.exe --cflags gtk+-2.0 gthread-2.0 glib-2.0) libs_flags=$(pkg-config.exe --libs gtk+-2.0 gthread-2.0 glib-2.0) if grep -q "CONFIG_UI_NONE 1" config.h then echo "CONFIG: NOUI" ls *.c|egrep -v "(ui_gtk|test.c)" > tmp.cfiles.txt libs_flags="" libs_flags2="" else echo "CONFIG: GTK" ls *.c|egrep -v "(no-ui.c|test.c)" > tmp.cfiles.txt libs_flags="-L/cygdrive/c/Program Files/Common Files/GTK/2.0/bin" libs_flags2="-lgdk-win32-2.0-0 -lglib-2.0-0 -lgobject-2.0-0 -lgthread-2.0-0 -lgtk-win32-2.0-0" fi # For NOUI build remove the quotes around the $libs_flags gcc -shared -DHAVE_CONFIG_H \ -I. -I$JAVA_HOME/include/ \ -I$JAVA_HOME/include/win32/ \ $cflags_flags \ -mno-cygwin -mms-bitfields \ -O3 -Wall -DDLL_EXPORT -DPIC $(cat tmp.cfiles.txt) \ -o jmp.dll \ "$libs_flags" \ $libs_flags2 \ -lwsock32 \ -Wl,--kill-at -------------------------------------------------------------------------------- Installing JMP ============== You need to make the jmp.dll and all the gtk+ dlls available to the JVM. The easiest way to do this is to set the PATH variable. Running JMP =========== $JAVA_HOME\bin\java -Xrunjmp -classpath project\classes your.package.ClassName args For help information about JMP startup options try: $JAVA_HOME\bin\java -Xrunjmp:help -classpath project\classes your.package.ClassName args