fix doxygen generation
[obnox/wireshark/wip.git] / README.win32
index be7b2f20c7a59ea2ad6db4b2164787d976c9a95b..691751c4d7d43cc29265aeb0a0ca49993423d65c 100644 (file)
@@ -1,4 +1,4 @@
-$Id: README.win32,v 1.60 2004/02/12 07:59:58 ulfl Exp $
+$Id$
 
 Installing Ethereal, Tethereal, and Editcap on Win32
 ====================================================
@@ -88,93 +88,105 @@ The rest of this documentation is only interesting if
 you want to compile Ethereal yourself.
 
 
-Running Ethereal, Tethereal, and Editcap on Win32
-=================================================
-You need the glib and gtk libraries for running Ethereal. 
+Compiling the Ethereal distribution from source
+===============================================
 
-These packages for win32 can be found at:
+Compilers
+---------
+MS Visual C++ Version 6
+This is the common compiler used for building Ethereal on win32.
 
-       http://www.ethereal.com/distribution/win32
+MS Visual C++ Version 7 / VC.NET
+Currently unsupported for two reasons:
+-the licence agreement does NOT allow you to compile GPL code.
+-there are serious problems in using DLL's compiled with MS VC6.
+See section "Problems with MS Visual C++ Version 7 / VC.NET" below.
 
-and at the home page for the GTK+ for Win32 project:
+Cygwin GCC
+Ethereal can entirely be built with cygwin GCC. However the built binaries will
+only run in a cygwin environment, so they are not standalone Win32 applications.
+It is however not excluded that native Win32 code can be compiled on cygwin GCC
+but you then have to use -mms-bitfields as a strict minimum and probably
+-mno-cygwin or a similar compiler flag too.
+See section below for instructions.
 
-       http://www.gimp.org/~tml/gimp/win32
 
-or
-       http://www.iki.fi/tml/gimp/win32/
+Automated library download
+--------------------------
+Before using the automated download, be sure to edit the config.nmake file 
+to suit your needs. Especially have a look at the ETHEREAL_LIBS setting.
+However, the defaults should be working well for a first start.
 
-(the mirror nearer to you may be faster).
+If you've installed Microsoft Visual C++ (MSVC), you can run:
 
-Plugins (gryphon.dll and mgcp.dll) can go in:
-       <Ethereal installation directory>\plugins\<version>
+nmake -f makefile.nmake setup 
 
-Where <version> is the version number, without brackets.  For example,
-if you have Ethereal 0.9.8 installed in the default location, plugins
-will reside in C:\Program Files\Ethereal\plugins\0.9.8
+This will first check the availability of all required tools and then uses 
+the tool wget to download each package file (together around 30MB!) from the 
+server location at:
 
-Yes, the location of plugins needs to be more flexible.
+       http://anonsvn.ethereal.com/ethereal-win32-libs/trunk/packages/
 
-Make sure the glib and gtk DLL's are in your path - i.e., that your
-path includes the directory (folder) or directories (folders) in which
-those DLLs are found - when you run Ethereal.  This includes gtk-*.dll,
-glib-*.dll, gmodule-*.dll, gdk-*.dll, intl.dll, and iconv-*.dll.  As of
-the 20000805 GTK+/GLIB distribution, gthread-*.dll is no longer needed.
+and unpack it in the $ETHEREAL_LIBS directory. 
 
-Note the wiretap*.dll must be in your path as well and if wiretap is changed
-be shure to put the new one in your path.
+If you have problems downloading the files, you might be connected to the 
+internet through a proxy/firewall. In this case see the wget documentation 
+to configure wget accordingly.
 
-The Win32 Binary distribution, available from
 
-       http://www.ethereal.com/distribution/win32
+Required libraries
+------------------
+If the automated library download finished sucessfully, you should have all
+libraries on your machine at the right places. So you don't have to read this,
+unless you are interested which libraries are used.
 
-used different version of the GTK+/GLIB libraries at different points
-in time:
+You'll need the development packages for GLIB, GTK+, iconv, gettext,
+WinPcap, Net-SNMP, and optionally ADNS, PCRE and zlib. The development 
+packages contain header files and stub libraries to link against.  
 
-Ethereal Version               GTK+/GLIB version
-----------------               -----------------
-0.8.16 and after               20001226
-0.8.11 - 0.8.15                        20000805
-0.8.9 - 0.8.10                 20000416
-0.8.8 and before               19990828
+PRECOMPILED VERSIONS OF ALL OF THESE PACKAGES ARE AVAILABLE AT:
 
+       http://anonsvn.ethereal.com/ethereal-win32-libs/trunk/packages/
 
-Capturing Packets
------------------
-In order to capture with Win32, you need to install the NDIS
-packet capture driver for your particular Win32 OS; drivers for Windows
-9x, Windows NT 4.0, Windows 2000 and Windows XP can be downloaded from the
-WinPcap home page:
 
-       http://winpcap.polito.it/
+The GLIB, GTK+, iconv, gettext packages for win32 can be found at the home 
+page for the GTK+ for Win32 project:
 
-or the mirror site at
+       http://www.gimp.org/~tml/gimp/win32 or the mirror
+       http://www.iki.fi/tml/gimp/win32/
 
-       http://www.wiretapped.net/security/packet-capture/winpcap/default.htm
+The Net-SNMP package for win32 is available at its homepage:
 
-Compiling the Ethereal distribution from source
-===============================================
+       http://
 
-You'll need the development packages for GLIB, GTK+, iconv, gettext,
-WinPcap, zlib, Net-SNMP, ADNS, and PCRE.  The GLIB, GTK+, and WinPcap
-packages are available from the respective home pages for each project
-(the same URLs as listed above). The development packages contain header
-files and stub libraries to link against.  Precompiled versions of all
-of these packages are available at
+The WinPcap package is available at its homepage:
 
-       http://www.ethereal.com/distribution/win32/development/
+       http://winpcap.polito.it/ or the mirror
+       http://www.wiretapped.net/security/packet-capture/winpcap/default.htm
 
-The ADNS package is also available at its homepage:
+The optional ADNS package for win32 is available at its homepage:
 
        http://adns.jgaa.com/
 
+The optional PCRE package (Perl Compatible Regular Expressions) for win32 is 
+available at its homepage:
+
+       http://gnuwin32.sourceforge.net/packages/pcre.htm
+
+The optional zlib package for win32 is available at its homepage:
+
+       http://www.gzip.org/zlib/
+
+
 By default, the build process looks for these packages in
 C:\ethereal-win32-libs.  You can place them in a different directory, but
-you must update config.nmake accordingly.  The default location for each
-package is as follows:
+you must update the ETHEREAL_LIBS variable in config.nmake accordingly.
+
+The following lists the packages needed to compile Ethereal and the default
+locations where to unpack them, when the above method isn't used.
 
     Package                               Default Location
     -------                               ----------------
-    adns-1.0-win32-01.zip                 C:\ethereal-win32-libs
     glib-2.2.3-20040116.zip               C:\ethereal-win32-libs\glib
     glib-dev-2.2.3-20040116.zip           C:\ethereal-win32-libs\glib
     gtk+-1.3.0-20030717.zip               C:\ethereal-win32-libs\gtk+
@@ -182,8 +194,12 @@ package is as follows:
     libiconv-1.9.1.bin.woe32.zip          C:\ethereal-win32-libs\libiconv-1.9.1.bin.woe32
     gettext-runtime-0.13.1.zip            C:\ethereal-win32-libs\gettext-runtime-0.13.1
     net-snmp-5.1.zip                      C:\ethereal-win32-libs
-    pcre-4.4.zip                          C:\ethereal-win32-libs
     wpdpack_3_0.zip                       C:\ethereal-win32-libs
+
+and optional:
+
+    adns-1.0-win32-03.zip                 C:\ethereal-win32-libs
+    pcre-4.4.zip                          C:\ethereal-win32-libs
     zlib121-dll.zip                       C:\ethereal-win32-libs\zlib121-dll
 
 (to use the default locations, the directories in question should be
@@ -201,30 +217,58 @@ GLib 2.2.3.
 
 
 Compiling the Ethereal distribution using GTK+2
-===============================================
+-----------------------------------------------
 
 The more recent version 2 of the GTK+ can be used to compile 
-Ethereal with, but is still considered experimental.
+Ethereal with, but is still considered beta.
 
-GTK+2 will look better and nicer in some ways, especially for WIN32 users.
+GTK+2 will look better in various ways, especially for WIN32 users.
 
 You can get the required libraries from:
 
+http://www.ethereal.com/distribution/win32/development/gtk2
+
+or (like the GTK+1 libraries from the GTK+ for Win32 project):
+
 http://www.gimp.org/~tml/gimp/win32/downloads.html
 
 If you want to try a build with GTK+2.x these Extra libraries are needed 
 
     Package                               Default Location
     -------                               ----------------
-    gtk+-2.2.4-20040124.zip                  C:\ethereal-win32-libs\gtk2
+    gtk+-2.2.4-20040124.zip               C:\ethereal-win32-libs\gtk2
     gtk+-dev-2.2.4-20040124.zip                  C:\ethereal-win32-libs\gtk2
     pango-1.2.5-20040124.zip              C:\ethereal-win32-libs\gtk2  
     pango-dev-1.2.5-20040124.zip          C:\ethereal-win32-libs\gtk2
     atk-1.4.0.zip                         C:\ethereal-win32-libs\gtk2  
     atk-dev-1.4.0.zip                     C:\ethereal-win32-libs\gtk2
 
+and optional:
+
+    gtk-wimp-0.5.3-bin.zip                C:\ethereal-win32-libs\gtk-wimp
+
 Be sure to set GTK2_DIR in config.nmake correct, to be able to compile.
 
+Running your freshly compiled Ethereal
+--------------------------------------
+
+Make sure the glib and gtk DLL's are in your path or you use a directory 
+where all required DLL's and the exe files reside.- i.e., that your
+path includes the directory (folder) or directories (folders) in which
+those DLLs are found - when you run Ethereal.
+
+Note the wiretap*.dll must be in your path as well and if wiretap is changed
+be sure to put the new one in your path.
+
+Plugins (gryphon.dll and mgcp.dll) can go in:
+       <Ethereal installation directory>\plugins\<version>
+
+Where <version> is the version number, without brackets.  For example,
+if you have Ethereal 0.9.8 installed in the default location, plugins
+will reside in C:\Program Files\Ethereal\plugins\0.9.8
+
+Yes, the location of plugins needs to be more flexible.
+
 Instructions for MS Visual C++
 ----------------------------
 Modify the config.nmake file in the top directory of the Ethereal source
@@ -338,21 +382,74 @@ Cygwin package:
 After installing them, you will probably have to modify the config.nmake
 file to specify where the Cygwin binaries are installed.
 
-Python for Win32 is available from
+Python for Win32 is available from:
 
        http://www.python.org/
 
 
-If you want to build an installer you need to get NSIS from:
+Build an (NSIS based) installer
+-------------------------------
+
+If you want to build your own installer, you need to get NSIS from:
 
 http://nsis.sourceforge.net/home/
 
 After installing it, you will probably have to modify the config.nmake
-file to specify where the binaries are installed and wether to use the modern UI or not.
+file to specify where the NSIS binaries are installed and wether to use the modern UI or not.
 You will need NSIS version 2 or higher, to build an installer with the modern user interface,
 and for a much smaller installer (using the lzma compression).
 
 In the ethereal directory, type "nmake -f makefile.nmake packaging" to build the installer. 
+Please be patient while the compression is done, it will take some time even on fast machines.
+
+You will hopefully now see something like ethereal-setup-0.10.2.exe in the dir packaging/nsis.
+
+
+Installing GTK-Wimp
+-------------------
+
+GTK-Wimp can be used to get a native Look-and-Feel on WinXP machines, 
+especially with the new "coloured" WinXP theme. It will only take effect
+together with the GTK2 version of Ethereal. 
+
+No changes to the Ethereal sources are needed, GTK-Wimp simply changes the 
+way GTK2 displays the widgets (by changing the GTK2 default theme).
+
+GTK-Wimp might already be installed. In this case, the files mentioned below
+are already existing at the appropriate places.
+
+If GTK-Wimp isn't installed, you can install it yourself: 
+
+1. Go to http://gtk-wimp.sourceforge.net/
+2. Download the ZIP archive containing the library and the theme
+3. Locate the installation directory of Ethereal (C:\Program Files\Ethereal)
+4. Create a subdirectory 'share\themes\Default\gtk-2.0'
+5. Drop the file 'gtkrc' in 'share\themes\Default\gtk-2.0'
+6. Create a subdirectory named 'lib\gtk-2.0\2.2.0\engines'
+7. Drop the 'libwimp.dll' library in 'lib\gtk-2.0\2.2.0\engines'
+
+When you're finished, you should have:
+
+C:\Program Files\Ethereal\lib\gtk-2.0\2.2.0\engines\libwimp.dll
+C:\Program Files\Ethereal\share\themes\Default\gtk-2.0\gtkrc
+
+After (re-)starting Ethereal, you should now see it's widgets in the modern 
+WinXP style on your screen.
+
+
+Problems with MS Visual C++ Version 7 / VC.NET
+----------------------------------------------
+Beside licensing problems with these compilers, there are known problems with DLL's.
+If Ethereal is compiled with MSVC Version 7, there are conflicts in the MSVCRT DLL's,
+The MSVCRT.DLL includes the standard ANSI-C functions like fopen, malloc, etc.. MSVCRT.DLL
+is shipped with the MSVC 6 compiler versions, and dynamically linked to prebuild DLL's like 
+the one's for gtk, glib and such. The MSVC 7 compiler now uses and ships MSVCRT71.DLL with 
+it, which is incompatible with MSVCRT.DLL. So when using the MSVC 7 compiler, some parts of
+the Ethereal code uses MSVCRT71.DLL, and some others (indirectly from e.g. the gtk DLL) will
+use MSVCRT.DLL. This will result in incorrect file handles and such.
+
+The same problem seems to apply on all MSVC compilers after version 6, like the
+"Microsoft Visual C++ Toolkit 2003".
 
 
 Instructions for Cygwin
@@ -409,7 +506,7 @@ To get it running, execute the following steps:
      $ make install
 
 5. Patch Makefile.am in <ethereal-src>/gtk/Makefile.am by
-   removing "gtkclist.c" from the dependencies.
+   removing "ethclist.c" from the dependencies.
 
    This patch is required since the private GTK+ clist widget
    (was required for earlier versions of GTK+ but prevents Ethereal
@@ -421,33 +518,25 @@ To get it running, execute the following steps:
 
      $ PATH=/opt/gnome/bin:$PATH
 
-     $ ./autogen.sh --without-pcap --without-plugins
-     $ ./configure --without-pcap --without-plugins
+     $ ./autogen.sh
+     $ ./configure --config-cache --without-pcap
      $ make
 
-   This make will eventually stop, but it is required as e.g., the
-   GTK binaries are built then.
-
-     $ make ethereal.exe
-
 7. Start X
 
      $ sh /usr/X11R6/bin/startxwin.sh
 
-   For non-US keyboard layouts, use (replace 'be' with your layout):
-
-     $ setxkbmap.exe -layout be
+    Or you can start it from C:\cygwin\usr\X11R6\bin\startxwin.bat 
 
 8. Run ethereal (add /opt/gnome/bin to $PATH if this is not yet done)
 
      $ <ethereal-src>/ethereal
 
-   And voila! Behold the mighty sniffer in all its glory!
+    And voila! Behold the mighty sniffer in all its glory!
 
-Something is wrong with the makefile that gets generated, so it doesn't work
-just running make.
-I am not curious enough to look at why 'make' doesnt work; 'make ethereal.exe'
-works well enough for me.
+    Note that the plugin dissectors must be installed (make install) if you
+    want to use them. Note also that running "make install" produces lots of
+    output to the console; this is normal.
 
 Note: Compiling Ethereal under cygwin takes a lot of time, because the
 generation of 'register.c' takes ages. If you only edit one dissector and
@@ -460,3 +549,13 @@ of the file 'register.c' in Makefile. Look for the 'register.c' target:
        @echo Skipping generation of register.c
 
 Of course, you need to generate the 'register.c' file at least once.
+
+Note: You can also capture packets on a cygwin built Ethereal. You then have
+to unpack the WinPCap development package, install the files in lib/ and
+include/ in say /usr/lib and /usr/include (they must be in the search path of
+the compiler and linker, otherwise you have to specify the configure option
+--with-pcap=/location/to/pcap so the packet capture functionality can be used.
+In order to run Ethereal, you have to add the .dll files in a directory in the
+PATH (e.g., /bin).
+Should you want packet capturing enabled in the cygwin build, then you have to
+remove --without-pcap from step 6.