wireshark/docbook/wsdg_src/WSDG_chapter_tools.xml

1753 lines
73 KiB
XML

<!-- WSDG Chapter Tools -->
<!-- $Id$ -->
<chapter id="ChapterTools">
<title>Tool Reference</title>
<section id="ChToolsIntro">
<title>Introduction</title>
<para>This chapter will provide you with information about the
various tools needed for Wireshark development.</para>
<para>None of the tools mentioned in this chapter are needed to
run Wireshark; they are only needed to build it.</para>
<para>Most of these tools have their roots on UNIX like
platforms, but Win32 ports are also available. Therefore the
tools are available in different "flavours":
<itemizedlist>
<listitem>
<para>UNIX (or Win32 Cygwin): the tools should be commonly
available on the supported UNIX platforms, and for Win32
platforms by using the Cygwin UNIX emulation</para>
</listitem>
<listitem>
<para>Win32 native: some tools are available as native
Win32 tools, no special emulation is required</para>
</listitem>
</itemizedlist></para>
<warning>
<title>Warning!</title>
<para>
<command>Unless you know exactly what you are doing, you
should strictly follow the recommendations given in</command>
<xref linkend="ChapterSetup" />!</para>
</warning>
<para>The following sections give a very brief description of
what a particular tool is doing, how it is used in the
Wireshark project and how it can be installed and
tested.</para>
<para>Don't expect a lot of documentation regarding these tools
in this document. If you need further documentation of a
specific tool, you should find lot's of useful information on
the web, as these tools are commonly used. You can also try to
get help for the UNIX based tools with
<userinput>toolname --help</userinput> or read the manpage
<userinput>man toolname</userinput>.</para>
<para>You will find explanations of the tool usage for some of
the specific development tasks in
<xref linkend="ChapterSources" />.</para>
</section>
<section id="ChToolsCygwin">
<title>Win32: Cygwin</title>
<para>Cygwin provides a lot of UNIX based tools on the Win32
platform. It uses a UNIX emulation layer which might be a bit
slower compared to the native Win32 tools, but at an acceptable
level. The installation and update is pretty easy and done
through a single (web based) setup.exe.</para>
<para>The native Win32 tools will typically be a bit faster,
but more complicated to install, as you would have to download
the tools from different webpages, and install them in
different ways, tweaking the PATH and alike.</para>
<note>
<title>Note!</title>
<para>As there's no Win32 native bash version available, at
least a basic installation of cygwin is required in any
case.</para>
</note>
<para>Although Cygwin consists of several separate packages,
the installation and update is done through a single setup.exe,
which acts similar to other web based installers. All tools
will be installed into one base folder, the default is
<filename>C:\cygwin</filename>.</para>
<para>You will find this network based setup.exe at:
<ulink url="http://www.cygwin.com/" />. Click on one of the
"Install Cygwin now" appearances to download the
<filename>setup.exe</filename>. After the download completed,
start this
<filename>setup.exe</filename> on your machine.</para>
<para>The setup will ask you for some settings, the defaults
should usually work well for a first start. At the "Select
Packages" page, you'll need to select some additional packages,
which are not installed by default. Navigate to the required
Category/Package row and click on the "Skip" item in the "New"
column so it shows a version number for the required
package</para>
<para>After clicking the Next button several times, the setup
will then download and install the selected packages (this may
take a while, depending on the package size).</para>
<para>Under: "Start&#x2192;Programs&#x2192;Cygwin&#x2192;Cygwin
Bash Shell" you should now be able to start a new Cygwin bash
shell, which is similar to the command line
(command.com/cmd.exe) in Win32, but much more powerful.</para>
<section id="ChToolsCygwinPackages">
<title>Add/Update/Remove Cygwin Packages</title>
<para>If you want to add additional, update installed or
remove packages later, you have to start the setup.exe again.
At the "Select Packages" page, the entry in the "New" column
will control what is done (or not) with the package. If a new
version of a package is available, the new version number
will be displayed, so it will be automatically updated. You
can change the current setting by simply clicking at it, it
will change between:
<itemizedlist>
<listitem>
<para>a specific version number - this different package
version will be installed</para>
</listitem>
<listitem>
<para>Skip - not installed, no changes</para>
</listitem>
<listitem>
<para>Keep - already installed, no changes</para>
</listitem>
<listitem>
<para>Uninstall - uninstall this package</para>
</listitem>
<listitem>
<para>Reinstall - reinstall this package</para>
</listitem>
</itemizedlist></para>
</section>
</section>
<section id="ChToolsGNUChain">
<title>GNU compiler toolchain (UNIX or Win32 Cygwin)</title>
<section id="ChToolsGCC">
<title>gcc (GNU compiler collection)</title>
<warning>
<title>Win32: Warn!</title>
<para>Using Cygwin gcc to compile Wireshark is "EXPERT
ONLY" and therefore NOT recommended. If you really want to
try it anyway, see:
<ulink url="http://wiki.wireshark.org/Development/CygwinGCC" /> for
some details!</para>
</warning>
<para>The GCC C compiler is available for most of the
UNIX-like platforms and as the Devel/gcc package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If GCC isn't already installed or available
as a package for your platform, you can get it at:
<ulink url="http://gcc.gnu.org/" />.</para>
<para>After correct installation, typing at the
bash command line prompt:</para>
<para>
<prompt>$</prompt>
<userinput>gcc --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[gcc (GCC) 3.4.4 (cygwin special) (gdc 0.12, using dmd 0.125)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsGDB">
<title>gdb (GNU project debugger)</title>
<para>GDB is the debugger for the GCC compiler. It is
available for many (if not all) UNIX-like platforms and as
the Devel/gdb package from the
<link linkend="ChToolsCygwin">Cygwin setup</link></para>
<para>If you don't like debugging using the command line,
there are some GUI frontends for it available, most notably
GNU DDD.</para>
<para>If gdb isn't already installed or available
as a package for your platform, you can get it at:
<ulink url="http://www.gnu.org/software/gdb/gdb.html" />.</para>
<para>After correct installation:</para>
<para>
<prompt>$</prompt>
<userinput>gdb --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[GNU gdb 6.5.50.20060706-cvs (cygwin-special)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i686-pc-cygwin".]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsDDD">
<title>ddd (GNU Data Display Debugger)</title>
<para>The GNU Data Display Debugger is a good GUI frontend
for GDB (and a lot of other command line debuggers), so you
have to install GDB first. It is available for many UNIX-like
platforms and as the ddd package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If GNU DDD isn't already installed or
available as a package for your platform, you can get it at:
<ulink url="http://www.gnu.org/software/ddd/" />.</para>
</section>
<section id="ChToolsGNUmake">
<title>make (GNU Make)</title>
<note>
<title>Win32 Note!</title>
<para>Although some effort is made to use make from the
Cygwin environment, the mainline is still using Microsoft
Visual Studio's nmake.</para>
</note>
<para>GNU Make is available for most of the UNIX-like
platforms and also as the Devel/make package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If GNU Make isn't already installed or
available as a package for your platform, you can get it at:
<ulink url="http://www.gnu.org/software/make/" />.</para>
<para>After correct installation:</para>
<para>
<prompt>$</prompt>
<userinput>make --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.]]>
</programlisting>However, the version string may vary.</para>
</section>
</section>
<section id="ChToolsMSChain">
<title>Microsoft compiler toolchain (Win32 native)</title>
<para>To compile Wireshark on Windows using the Microsoft C/C++
compiler, you'll need:</para>
<orderedlist>
<listitem>
<para>C compiler (<filename>cl.exe</filename>)</para>
</listitem>
<listitem>
<para>Assembler (<filename>ml.exe</filename> for 32-bit targets
and <filename>ml64.exe</filename> for 64-bit targets)</para>
</listitem>
<listitem>
<para>Linker (<filename>link.exe</filename>)</para>
</listitem>
<listitem>
<para>Make (<filename>nmake.exe</filename>)</para>
</listitem>
<listitem>
<para>C runtime headers and libraries (e.g. <filename>stdio.h,
msvcrt.lib</filename>)</para>
</listitem>
<listitem>
<para>Windows platform headers and libraries (e.g.
<filename>windows.h, WSock32.lib</filename>)</para>
</listitem>
<listitem>
<para>HTML help headers and libraries (<filename>htmlhelp.h,
htmlhelp.lib</filename>)</para>
</listitem>
</orderedlist>
<section>
<title>Toolchain Package Alternatives</title>
<para>
The official Wireshark 1.8.x releases are compiled using
Microsoft Visual C++ 2010 SP1.
The official 1.2, 1.4, and 1.6 releases are and were compiled using
Microsoft Visual C++ 2008 SP1.
Other past releases, including the 1.0 branch,
were compiled using Microsoft Visual C++ 6.0. Using the release
compilers is recommended for Wireshark development work. "Express
Edition" compilers such as Visual C++ 2010 Express Edition SP1 can be
used but any PortableApps or U3 packages you create with them
will require the installation of a separate Visual C++
Redistributable package on any machine on which the PortableApps
or U3 package is to be used. See
<quote><link linkend='msvc-runtime-redistributable' endterm='msvc-runtime-redistributable.title'/></quote>
below for more details.
</para>
<para>
However, you might already have a different Microsoft C++ compiler
installed. It should be possible to use any of the following with the considerations listed:
</para>
<informaltable frame="all">
<tgroup cols="8">
<colspec colname="compiler_package" colwidth="12*" />
<colspec colname="ide_debugger" colwidth="12*" />
<colspec colname="publicly_available" colwidth="12*" />
<colspec colname="sdk_required" colwidth="12*" />
<colspec colname="msvc_variant" colwidth="12*" />
<colspec colname="bitwidth" colwidth="12*" />
<colspec colname="vcvars_bat" colwidth="12*" />
<colspec colname="remarks" colwidth="12*" />
<tbody>
<row>
<entry>
<para>Compiler Package</para>
</entry>
<entry>
<para>IDE / Debugger?</para>
</entry>
<entry>
<para>Publicly available?</para>
</entry>
<entry>
<para>SDK required?</para>
</entry>
<entry>
<para>config.nmake:</para>
<para>MSVC_VARIANT</para>
</entry>
<entry>
<para>32-bit/64-bit</para>
</entry>
<entry>
<para>set compiler PATH and alike settings
with:</para>
</entry>
<entry>
<para>Remarks</para>
</entry>
</row>
<row>
<entry>
<para>Visual Studio 2005</para>
</entry>
<entry>
<para>Yes</para>
</entry>
<entry>
<para>Commercial
<superscript>1</superscript></para>
</entry>
<entry>
<para>No
<superscript>2</superscript></para>
</entry>
<entry>
<para>MSVC2005</para>
</entry>
<entry>
<para>32-bit only</para>
</entry>
<entry>
<para>Microsoft Visual Studio
8\VC\bin\vcvars32.bat</para>
</entry>
<entry>
<para>-</para>
</entry>
</row>
<row>
<entry>
<para>Visual C++ 2005 Express Edition</para>
</entry>
<entry>
<para>Yes</para>
</entry>
<entry>
<para>
Free Download (link disappeared)
</para>
</entry>
<entry>
<para>
Free Download (link disappeared)
</para>
</entry>
<entry>
<para>MSVC2005EE</para>
</entry>
<entry>
<para>32-bit only</para>
</entry>
<entry>
<para>Microsoft Visual Studio
8\VC\bin\vcvars32.bat</para>
</entry>
<entry>
<para>
<filename>vcredist_x86.exe</filename>
<superscript>3</superscript>
</para>
</entry>
</row>
<row>
<entry>
<para>Visual Studio 2008</para>
</entry>
<entry>
<para>Yes</para>
</entry>
<entry>
<para>Commercial</para>
</entry>
<entry>
<para>No
<superscript>2</superscript></para>
</entry>
<entry>
<para>MSVC2008</para>
</entry>
<entry>
<para>32-bit only?</para>
</entry>
<entry>
<para>Microsoft Visual Studio
9.0\VC\bin\vcvars32.bat</para>
</entry>
<entry>
<para>-</para>
</entry>
</row>
<row>
<entry>
<para>Visual C++ 2008 Express Edition SP1</para>
</entry>
<entry>
<para>Yes</para>
</entry>
<entry>
<para>
<ulink url="http://www.microsoft.com/download/details.aspx?id=14597">
Free Download</ulink></para>
</entry>
<entry>
<para>No
<superscript>2</superscript></para>
</entry>
<entry>
<para>MSVC2008EE</para>
</entry>
<entry>
<para>32-bit only?</para>
</entry>
<entry>
<para>Microsoft Visual Studio
9.0\VC\bin\vcvars32.bat</para>
</entry>
<entry>
<para>
<filename>vcredist_x86.exe</filename>
<superscript>3</superscript>
</para>
</entry>
</row>
<row>
<entry morerows="1" valign="middle">
<para>Visual Studio 2010</para>
</entry>
<entry morerows="1" valign="middle">
<para>Yes</para>
</entry>
<entry morerows="1" valign="middle">
<para>Commercial</para>
</entry>
<entry morerows="1" valign="middle">
<para>No
<superscript>2</superscript></para>
</entry>
<entry morerows="1" valign="middle">
<para>MSVC2010</para>
</entry>
<entry>
<para>32-bit</para>
</entry>
<entry>
<para>Microsoft Visual Studio
10.0\VC\vcvarsall.bat x86</para>
</entry>
<entry morerows="1" valign="middle">
<para>-</para>
</entry>
</row>
<row>
<entry>
<para>64-bit</para>
</entry>
<entry>
<para>Microsoft Visual Studio
10.0\VC\vcvarsall.bat x64</para>
</entry>
</row>
<row>
<entry morerows="1" valign="middle">
<para>Visual C++ 2010 Express Edition</para>
<para>(recommended)</para>
</entry>
<entry morerows="1" valign="middle">
<para>Yes</para>
</entry>
<entry morerows="1" valign="middle">
<para>
<ulink url="http://www.microsoft.com/express/Downloads/#Visual_Studio_2010_Express_Downloads">
Free Download</ulink></para>
</entry>
<entry>
<para>No
<superscript>2</superscript></para>
</entry>
<entry morerows="1" valign="middle">
<para>MSVC2010EE</para>
</entry>
<entry>
<para>32-bit</para>
</entry>
<entry>
<para>Microsoft Visual Studio
10.0\VC\vcvarsall.bat x86</para>
</entry>
<entry>
<para>
<filename>vcredist_x86.exe</filename>
<superscript>3</superscript>
</para>
</entry>
</row>
<row>
<entry>
<para>Yes
<superscript>2</superscript></para>
</entry>
<entry>
<para>64-bit</para>
</entry>
<entry>
<para>Microsoft Visual Studio
10.0\VC\vcvarsall.bat x64</para>
</entry>
<entry>
<para>
<filename>vcredist_x64.exe</filename>
<superscript>3</superscript>
</para>
</entry>
</row>
<row>
<entry>
<para>.NET Framework 2.0 SDK
<superscript>4</superscript></para>
</entry>
<entry>
<para>No</para>
</entry>
<entry>
<para>
Free Download (link disappeared)
</para>
</entry>
<entry>
<para>
Free Download (link disappeared)
</para>
</entry>
<entry>
<para>DOTNET20</para>
</entry>
<entry>
<para>32-bit only?</para>
</entry>
<entry>
<para>Microsoft.NET\SDK\v2.0\Bin\sdkvars.bat</para>
</entry>
<entry>
<para>
<filename>vcredist_x86.exe</filename>
<superscript>3</superscript>
</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>
<superscript>1</superscript>no longer officially available,
might still be available through the MSDN
subscriptions
</para>
<para>
<superscript>2</superscript>as the SDK is already
integrated in the package, you obviously don't need to
install it and don't even need to call a separate environment
setting batch file for the SDK!
</para>
<para>
<superscript>3</superscript><filename>vcredist_x86.exe</filename>
(3MB free download) is required to build
<filename>Wireshark-win32-&WiresharkCurrentVersion;.x.exe</filename>,
and <filename>vcredist_x64.exe</filename> is required to build
<filename>Wireshark-win64-&WiresharkCurrentVersion;.x.exe</filename>,
The version of <filename>vcredist_x86.exe</filename> or
<filename>vcredist_x64.exe</filename> <emphasis>must</emphasis>
match the version for your compiler, including any service packs
installed for the compiler.
</para>
<para>
<superscript>4</superscript>MSDN remarks that the
corresponding .NET runtime is required. It's currently
unclear if the runtime needs to be installed for the C
compiler to work - or is this only needed to compile / run
.NET programs?!?
</para>
</section>
<section>
<title>Legal issues with MSVC &gt; V6?</title>
<para>Please note: The following is not legal advice - ask
your preferred lawyer instead! It's the authors view, but
this view might be wrong!</para>
<para>The myriad of
<ulink url="http://anonsvn.wireshark.org/wireshark-win32-libs/tags/">
Win32 support lib</ulink> port projects all seem to believe
there are legal issues involved in using newer versions of
Visual Studio. This FUD essentially stems from two
misconceptions:</para>
<para>
<orderedlist>
<listitem>
<para>Unfortunately, it is believed by many that the
Microsoft Visual Studio 2003 EULA explicitly forbids
linking with GPL'ed programs. This belief is probably due
to an improper interpretation of the
<ulink url="http://msdn.microsoft.com/visualc/vctoolkit2003/eula.aspx">
Visual Studio 2003 Toolkit EULA</ulink>, which places
redistribution restrictions only on SOURCE CODE SAMPLES
which accompany the toolkit.</para>
</listitem>
<listitem>
<para>Other maintainers believe that the GPL itself
forbids using Visual Studio 2003, since one of the
required support libraries (MSVCR71.DLL) does not ship
with the Windows operating system. This is also a
wrongful interpretation, and the
<ulink url="http://www.gnu.org/licenses/gpl-faq.html#WindowsRuntimeAndGPL">
GPL FAQ</ulink> explicitly addresses this issue.</para>
</listitem>
</orderedlist>Similar applies to Visual Studio 2005 and
alike.</para>
<para>So in effect it should be perfectly legal to compile
Wireshark and distribute / run it if it was compiled with any
MSVC version &gt; V6!</para>
</section>
<section>
<title>cl.exe (C Compiler)</title>
<para>The following table gives an overview of the possible
Microsoft toolchain variants and their specific C compiler
versions "ordered by release date":</para>
<informaltable frame="all">
<tgroup cols="4">
<colspec colname="c1" colwidth="55*" />
<colspec colname="c2" colwidth="10*" />
<colspec colname="c3" colwidth="15*" />
<colspec colname="c4" colwidth="20*" />
<tbody>
<row>
<entry>
<para>Compiler Package</para>
</entry>
<entry>
<para>cl.exe</para>
</entry>
<entry>
<para>_MSC_VER</para>
</entry>
<entry>
<para>CRT DLL</para>
</entry>
</row>
<row>
<entry>
<para>Visual Studio 2005</para>
</entry>
<entry align="center" morerows="3" valign="middle">
<para>8.0</para>
</entry>
<entry align="center" morerows="3" valign="middle">
<para>1400</para>
</entry>
<entry align="center" morerows="3" valign="middle">
<para>msvcr80.dll</para>
</entry>
</row>
<row>
<entry>
<para>Visual C++ 2005 Express Edition</para>
</entry>
</row>
<row>
<entry>
<para>.NET Framework 2.0 SDK</para>
</entry>
</row>
<row>
<entry>
<para>Windows SDK for Windows Vista and
.NET Framework 3.0 Runtime Components</para>
</entry>
</row>
<row>
<entry>
<para>Visual Studio 2008</para>
</entry>
<entry align="center" morerows="1" valign="middle">
<para>9.0</para>
</entry>
<entry align="center" morerows="1" valign="middle">
<para>1500</para>
</entry>
<entry align="center" morerows="1" valign="middle">
<para>msvcr90.dll</para>
</entry>
</row>
<row>
<entry>
<para>Visual Studio 2008 Express Edition</para>
</entry>
</row>
<row>
<entry>
<para>Visual Studio 2010</para>
</entry>
<entry align="center" morerows="1" valign="middle">
<para>10.0</para>
</entry>
<entry align="center" morerows="1" valign="middle">
<para>1600</para>
</entry>
<entry align="center" morerows="1" valign="middle">
<para>msvcr100.dll</para>
</entry>
</row>
<row>
<entry>
<para>Visual Studio 2010 Express Edition</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>After correct installation of the toolchain, typing
at the command line prompt (cmd.exe):</para>
<para>
<prompt>&gt;</prompt>
<userinput>cl</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corp. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsNMake">
<title>nmake.exe (Make)</title>
<para>nmake is part of the toolchain packages described
above.</para>
<para>Instead of using the workspace (.dsw) and projects
(.dsp) files, the traditional nmake makefiles are used. This
has one main reason: it makes it much easier to maintain
changes simultaneously with the GCC toolchain makefile.am files
as both file formats are similar. However, as no Visual
Studio workspace/project files are available, this makes it
hard to use the Visual Studio IDE e.g. for using the
integrated debugging feature.</para>
<para>After correct installation, typing at the command
line prompt (cmd.exe):</para>
<para>
<prompt>&gt;</prompt>
<userinput>nmake</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[Microsoft (R) Program Maintenance Utility Version 6.00.9782.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
NMAKE : fatal error U1064: MAKEFILE not found and no target specified
Stop.]]>
</programlisting>However, the version string may vary.</para>
<para>Documentation on nmake can be found at
<ulink url="http://msdn2.microsoft.com/library/dd9y37ha(VS.71).aspx">
Microsoft MSDN</ulink></para>
</section>
<section>
<title>link.exe (Linker)</title>
<para>XXX - add info here</para>
</section>
<section id='msvc-runtime-redistributable'>
<title id='msvc-runtime-redistributable.title'>C-Runtime "Redistributable" Files</title>
<para>Please note: The following is not legal advice - ask
your preferred lawyer instead! It's the authors view, but
this view might be wrong!</para>
<para>Depending on the Microsoft compiler version you use,
some binary files coming from Microsoft might
be required to be installed on Windows machine to run
Wireshark. On a developer machine, the compiler setup
installs these files so they are available - but they might
not be available on a user machine!</para>
<para>This is especially true for the C runtime DLL
(msvcr*.dll), which contains the implementation of ANSI and
alike functions, e.g.: fopen(), malloc(). The DLL is named
like: msvcr&lt;version&gt;.dll, an abbreviation for
"MicroSoft Visual C Runtime". For Wireshark to work, this DLL
must be available on the users machine.</para>
<para>Starting with MSVC7, it is necessary to ship the C
runtime DLL (msvcr&lt;version&gt;.dll) together with the
application installer somehow, as that DLL is possibly not
available on the target system.</para>
<note>
<title>Note!</title>
<para>The files to redistribute must be mentioned in the
redist.txt file of the compiler package - otherwise it
can't be legally redistributed by third parties like
us!</para>
</note>
<para>The following MSDN links are recommended for the
interested reader:</para>
<para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://msdn2.microsoft.com/library/ms235299(VS.80).aspx">
"Redistributing Visual C++ Files"</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://msdn2.microsoft.com/library/ms235291(VS.80).aspx">
"How to: Deploy using XCopy"</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://support.microsoft.com/?scid=kb%3Ben-us%3B326922&amp;x=10&amp;y=13">
"Redistribution of the shared C runtime component
in Visual C++ 2005 and in Visual C++ .NET"</ulink>
</para>
</listitem>
</itemizedlist>
</para>
<para>
In all cases where <filename>vcredist_x86.exe</filename> or
<filename>vcredist_x64.exe</filename> is downloaded, it should
be downloaded to the directory into which the support libraries
for Wireshark have been downloaded and installed. This directory
is specified by the WIRESHARK_LIB_DIR setting in the
<filename>config.nmake</filename> file; by default it is
<filename>C:\wireshark-win32-libs</filename>. It need not, and
should not, be run after being downloaded.
</para>
<section>
<title>msvcr80.dll / vcredist_x86.exe - Version 8.0
(2005)</title>
<para>There are three redistribution methods that MSDN
mentions for MSVC 8 (see:
"<ulink url="http://msdn.microsoft.com/library/ms235316(VS.80).aspx">Choosing a Deployment Method</ulink>"):
</para>
<para>
<orderedlist>
<listitem>
<para>"Using Visual C++ Redistributable Merge Modules"
(kind of loadable modules for building msi installers -
not suitable for Wireshark's NSIS based installer)</para>
</listitem>
<listitem>
<para>"Using Visual C++ Redistributable Package", wherein
the Microsoft libraries are installed by copying
<filename>vcredist_x86.exe</filename>,
<filename>vcredist_x64.exe</filename>, or
<filename>vcredist_ia64.exe</filename> to the target
machine and executing it on that machine (MSDN recommends
this for applications built with Visual Studio 2005
Express Edition)
</para>
</listitem>
<listitem>
<para>"Install a particular Visual C++ assembly as a
private assembly for the application", wherein the
Microsoft libraries are installed by copying the folder
content of <filename>Microsoft.VC80.CRT</filename> to
the target directory (e.g. <filename>C:\Program
Files\Wireshark</filename>)</para>
</listitem>
</orderedlist>
</para>
<para>
To save installer size, and to make a "portable"
version of Wireshark (which must be completely self-contained,
on a medium such as a flash drive, and not require that an
installer be run to install anything on the target machine)
possible, when building 32-bit Wireshark with MSVC2005, method
3 (copying the content of <filename>Microsoft.VC80.CRT</filename>)
is used (this produces the smallest package).
</para>
<para>
As MSVC2005EE and DOTNET20 don't provide the folder
<filename>Microsoft.VC80.CRT</filename>, when 32-bit Wireshark
is built with either of them method 2 is used.
You'll have to download the appropriate version of
<filename>vcredist_x86.exe</filename> from Microsoft for your
compiler version.
</para>
<para>
A portable version of 64-bit Wireshark is not built, so method
3 is used for all 64-bit builds. You'll have to download the
appropriate version of <filename>vcredist_x64.exe</filename>
or <filename>vcredist_ia64.exe</filename> from Microsoft
for your target processor and compiler version.
</para>
<para>
<itemizedlist>
<listitem>
<para>
For 32-bit builds using Microsoft Visual C++ 2005
Express Edition without Service Pack 1, you need
<command>8.0.50608.0</command>,
from: "Microsoft Visual C++ 2005 Redistributable Package (x86)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=3387" />.
</para>
</listitem>
<listitem>
<para>
For 64-bit x86 (x64) builds using Microsoft Visual C++
2005, any edition, without Service Pack 1, you need
<command>{fill this in}</command>,
from: "Microsoft Visual C++ 2005 Redistributable Package (x64)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=21254" />.
</para>
</listitem>
<listitem>
<para>
For IA-64 builds using Microsoft Visual C++ 2005, any
edition, without Service Pack 1, you need
<command>{fill this in}</command>,
from: "Microsoft Visual C++ 2005 Redistributable Package (IA64)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=16326" />.
</para>
</listitem>
<listitem>
<para>
For 32-bit builds using Microsoft Visual C++ 2005
Express Edition with Service Pack 1, you need
<command>8.0.50727.762</command>, from: "Microsoft
Visual C++ 2005 SP1 Redistributable Package (x86)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=5638" />.
</para>
</listitem>
<listitem>
<para>
For 64-bit x86 builds using Microsoft Visual C++ 2005,
any edition, with Service Pack 1, you need
<command>{fill this in}</command>, from: "Microsoft
Visual C++ 2005 SP1 Redistributable Package (x64)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=18471" />.
</para>
</listitem>
</itemizedlist>
</para>
<para>
Please report to the developer mailing list, if you
find a different version number!
</para>
</section>
<section>
<title>msvcr90.dll / vcredist_x86.exe / vcredist_x64.exe - Version 9.0 (2008)</title>
<para>There are three redistribution methods that MSDN
mentions for MSVC 9 (see:
"<ulink url="http://msdn.microsoft.com/en-US/library/ms235316(v=vs.90).aspx">Choosing a Deployment Method</ulink>"):
</para>
<para>
<orderedlist>
<listitem>
<para>"Using Visual C++ Redistributable Merge Modules"
(kind of loadable modules for building msi installers -
not suitable for Wireshark's NSIS based installer)</para>
</listitem>
<listitem>
<para>"Using Visual C++ Redistributable Package", wherein
the Microsoft libraries are installed by copying
<filename>vcredist_x86.exe</filename> or
<filename>vcredist_x64.exe</filename> to the target
machine and executing it on that machine (MSDN recommends
this for applications built with Visual Studio 2008
Express Edition)
</para>
</listitem>
<listitem>
<para>"Install a particular Visual C++ assembly as a
private assembly for the application", wherein the
Microsoft libraries are installed by copying the folder
content of <filename>Microsoft.VC90.CRT</filename> to
the target directory (e.g. <filename>C:\Program
Files\Wireshark</filename>)</para>
</listitem>
</orderedlist>
</para>
<para>
To save installer size, and to make a "portable"
version of Wireshark (which must be completely self-contained,
on a medium such as a flash drive, and not require that an
installer be run to install anything on the target machine)
possible, when building 32-bit Wireshark with MSVC2008, method
3 (copying the content of <filename>Microsoft.VC90.CRT</filename>)
is used (this produces the smallest package).
</para>
<para>
As MSVC2008EE doesn't provide the folder
<filename>Microsoft.VC90.CRT</filename>,
when 32-bit Wireshark is built with it method 2 is used.
You'll have to download the appropriate version of
<filename>vcredist_x86.exe</filename> from Microsoft for your
compiler version.
</para>
<para>
A portable version of 64-bit Wireshark is not built, so method
2 is used for all 64-bit builds. You'll have to download the
appropriate version of <filename>vcredist_x64.exe</filename>
from Microsoft for your compiler version.
</para>
<para>
<itemizedlist>
<listitem>
<para>
For 32-bit builds using Microsoft Visual C++ 2008
Express Edition without Service Pack 1, you need
<command>9.0.21022.8</command>, from:
"Microsoft Visual C++ 2008 Redistributable Package (x86)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=29" />.
</para>
</listitem>
<listitem>
<para>
For 64-bit builds using Microsoft Visual C++ 2008,
any edition, without Service Pack 1, you need
<command>9.0.21022.8</command>, from:
"Microsoft Visual C++ 2008 Redistributable Package (x64)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=15336" />.
</para>
</listitem>
<listitem>
<para>
For 32-bit builds with Microsoft Visual C++ 2008
Express Edition with Service Pack 1, you need
<command>9.0.30729.17</command>, from:
"Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=5582" />.
</para>
</listitem>
<listitem>
<para>
For 64-bit builds with Microsoft Visual C++ 2008,
any edition, with Service Pack 1, you need
<command>9.0.30729.17</command>, from:
"Microsoft Visual C++ 2008 SP1 Redistributable Package (x64)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=2092" />.
</para>
</listitem>
</itemizedlist>
</para>
<para>
Please report to the developer mailing list, if you
find a different version number!
</para>
</section>
<section>
<title>msvcr100.dll / vcredist_x86.exe / vcredist_x64.exe - Version 10.0 (2010)</title>
<para>There are three redistribution methods that MSDN
mentions for MSVC 10 (see:
"<ulink url="http://msdn.microsoft.com/en-US/library/ms235316(v=vs.100).aspx">Choosing a Deployment Method</ulink>"):
</para>
<para>
<orderedlist>
<listitem>
<para>"Using Visual C++ Redistributable Package", wherein
the Microsoft libraries are installed by copying
<filename>vcredist_x86.exe</filename> or
<filename>vcredist_x64.exe</filename> to the target
machine and executing it on that machine (MSDN recommends
this for applications built with Visual Studio 2010,
both Express Edition and non-Express editions)
</para>
</listitem>
<listitem>
<para>"Using Visual C++ Redistributable Merge Modules"
(kind of loadable modules for building msi installers -
not suitable for Wireshark's NSIS based installer)</para>
</listitem>
<listitem>
<para>"Install a particular Visual C++ assembly as a
private assembly for the application", wherein the
Microsoft libraries are installed by copying the folder
content of <filename>Microsoft.VC100.CRT</filename> to
the target directory (e.g. <filename>C:\Program
Files\Wireshark</filename>)</para>
</listitem>
</orderedlist>
</para>
<para>
To save installer size, and to make a "portable"
version of Wireshark (which must be completely self-contained,
on a medium such as a flash drive, and not require that an
installer be run to install anything on the target machine)
possible, when building 32-bit Wireshark with MSVC2010, method
3 (copying the content of <filename>Microsoft.VC100.CRT</filename>)
is used (this produces the smallest package).
</para>
<para>
As MSVC20010EE doesn't provide the folder
<filename>Microsoft.VC100.CRT</filename>,
when 32-bit Wireshark is built with it method 1 is used.
You'll have to download the appropriate version of
<filename>vcredist_x86.exe</filename> from Microsoft that
corresponds to your compiler version.
</para>
<para>
A portable version of 64-bit Wireshark is not built, so method
1 is used for all 64-bit builds. You'll have to download the
appropriate version of <filename>vcredist_x64.exe</filename>
from Microsoft for your compiler version.
</para>
<para>
<itemizedlist>
<listitem>
<para>
For 32-bit builds using Microsoft Visual C++ 2010
Express Edition without Service Pack 1, you need
<command>10.0.30319.1</command>, from: "Microsoft Visual
C++ 2010 Redistributable Package (x86)":
<ulink url="http://www.microsoft.com/download/en/details.aspx?id=5555" />.
</para>
</listitem>
<listitem>
<para>
For 64-bit builds using Microsoft Visual C++ 2010,
any edition, without Service Pack 1, you need
<command>10.0.30319.1</command>, from: "Microsoft Visual
C++ 2010 Redistributable Package (x64)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=14632" />.
</para>
</listitem>
<listitem>
<para>
For 32-bit builds using Microsoft Visual C++ 2010
Express Edition with Service Pack 1, you need
<command>10.0.40219.1</command>, from: "Microsoft Visual
C++ 2010 SP1 Redistributable Package (x86)":
<ulink url="http://www.microsoft.com/download/en/details.aspx?id=8328" />.
</para>
</listitem>
<listitem>
<para>
For 64-bit builds using Microsoft Visual C++ 2010,
any edition, with Service Pack 1, you need
<command>10.0.40219.1</command>, from: "Microsoft Visual
C++ 2010 SP1 Redistributable Package (x64)":
<ulink url="http://www.microsoft.com/download/details.aspx?id=13523" />.
</para>
</listitem>
</itemizedlist>
</para>
<para>
Please report to the developer mailing list, if you
find a different version number!
</para>
</section>
</section>
<section>
<title>Windows (Platform) SDK</title>
<para>The Windows Platform SDK (PSDK) or Windows SDK is a free
(as in beer) download and contains platform specific headers and
libraries (e.g. windows.h, WSock32.lib, ...). As new Windows
features evolve in time, updated SDK's become available that
include new and updated API's.</para>
<para>When you purchase a commercial Visual Studio, it will
include an SDK. The free (as in beer) downloadable C compiler
versions (VC++ 2005 Express, .NET Framework, ...) do not
contain an SDK - you'll need to download a PSDK in order to
have the required C header files and libraries.</para>
<para>Older versions of the SDK should also work. However, the
command to set the environment settings will be different, try
search for SetEnv.* in the SDK directory.</para>
<para>Prior to Windows Vista, the name "Platform SDK" was used;
starting with Vista, the name was changed just to "Windows
Software Development Kit" or "Windows SDK". The full names of the
SDKs can be misleading; for example, the SDK for Vista was called
the "Microsoft Windows Software Development Kit for Windows Vista
and .NET Framework 3.0 Runtime Components", which really means the
Windows SDK for Windows Vista and Platforms (like WinXP) that have
the .NET 3.0 runtime installed.</para>
</section>
<section>
<title>HTML Help</title>
<para>The HTML Help is used to create the User's and
Developer's Guide in .chm format and to show the User's Guide
as the Wireshark "Online Help".</para>
<para>Both features are currently optional, but might be
mandatory in future versions.</para>
<section>
<title>HTML Help Compiler (hhc.exe)</title>
<para>This compiler is used to generate a .chm file
from a bunch of HTML files - in our case to generate
the User's and Developer's Guide in .chm format.</para>
<para>The compiler is only available as the free (as in
beer) "HTML Help Workshop" download. If you want to compile
the guides yourself, you need to download and install this.
If you don't install it into the default directory, you may
also have a look at the HHC_DIR setting in the file
docbook/Makefile.</para>
</section>
<section>
<title>HTML Help Build Files (htmlhelp.c /
htmlhelp.lib)</title>
<para>The files htmlhelp.c and htmlhelp.lib are required to
be able to open .chm files from Wireshark - to show the
"online help".</para>
<para>Both files are part of the SDK (standalone (P)SDK or MSVC
since 2002). If you still use MSVC 6, you can get them from the
"HTML Help Workshop" mentioned above.</para>
<para>The related settings in config.nmake depend on the
MSVC variant you use:</para>
<para>
<itemizedlist>
<listitem>
<para>MSVC 6: if the "HTML Help Workshop" is
installed, set HHC_DIR to its directory</para>
</listitem>
<listitem>
<para>&gt; MSVC 6: set HHC_DIR to use it (the actual
value doesn't matter in this case)</para>
</listitem>
</itemizedlist>
</para>
</section>
</section>
<section id="ChToolsDebugger">
<title>Debugger</title>
<para>Well, using a good debugger can save you a lot of
development time.</para>
<para>The debugger you use must match the C compiler
Wireshark was compiled with, otherwise the debugger will
simply fail or you will only see a lot of garbage.</para>
<section id="ChToolsMSVCDebugger">
<title>Visual Studio integrated debugger</title>
<para>You can use the integrated debugger of Visual Studio
- only available in some of the toolchain packages.</para>
<para>However, setting up the environment is a bit tricky,
as the Win32 build process is using makefiles instead of
the .dsp/.dsw files usually used.</para>
<para>XXX - add instructions how to do it.</para>
</section>
<section id="ChToolsMSDebuggingTools">
<title>Debugging Tools for Windows</title>
<para>You could also use the Microsoft Debugging Tools for Windows toolkit,
which is a standalone GUI debugger. Although it's not that
comfortable compared to debugging with the Visual Studio
integrated debugger, it can be helpful if you have to debug
on a machine where an integrated debugger is not
available.</para>
<para>You can get it free of charge at:
<ulink url="http://www.microsoft.com/whdc/devtools/debugging/default.mspx" /> (as
links to Microsoft pages change from time to time, search
for "Debugging Tools" at their page if this link should be
outdated).</para>
</section>
</section>
</section>
<section id="ChToolsBash">
<title>bash</title>
<para>The bash shell is needed to run several shell
scripts.</para>
<section id="ChToolsGNUBash">
<title>UNIX or Win32 Cygwin: GNU bash</title>
<para>The bash shell is available for most of the UNIX-like
platforms and as the bash package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If bash isn't already installed or
available as a package for your platform, you can get it at:
<ulink url="http://www.gnu.org/software/bash/bash.html" />.</para>
<para>After correct installation, typing at the bash command line prompt:</para>
<para>
<prompt>$</prompt>
<userinput>bash --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[GNU bash, version 3.1.17(6)-release (i686-pc-cygwin)
Copyright (C) 2005 Free Software Foundation, Inc.]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsWin32Bash">
<title>Win32 native: -</title>
<para>The authors don't know of any working Win32 native bash
implementation.</para>
</section>
</section>
<section id="ChToolsPython">
<title>python</title>
<para>Python is an interpreter based programming language. The
homepage of the python project is:
<ulink url="http://python.org/" />. Python is used to generate
some source files. Python 2.4 to 2.7 should work fine.
</para>
<section id="ChToolsUnixPython">
<title>UNIX or Win32 Cygwin: python</title>
<para>Python is available for most of the UNIX-like platforms
and as the python package from the
<link linkend="ChToolsCygwin">Cygwin setup</link></para>
<para>If Python isn't already installed or
available as a package for your platform, you can get it at:
<ulink url="http://www.python.org/" />.</para>
<para>After correct installation, typing at the
bash command line prompt:</para>
<para>
<userinput>$ python -V</userinput>
</para>
<para>should result in something like:</para>
<para>
<computeroutput>Python 2.4.3</computeroutput>
</para>
<para>However, the version string may vary.</para>
</section>
<section id="ChToolsWin32Python">
<title>Win32 native: python</title>
<para>Get Python 2.7, 2.6, 2.5, or 2.4 from
<ulink url="http://python.org/download/" />.
You can download an installation package there, which
will install the Python system in the top level of your
<filename>C:</filename> drive by default, e.g.
<filename>C:\Python27</filename>.</para>
<para>You can check for a successful installation from a command prompt (cmd.exe):</para>
<para>
<prompt>C:\&gt;</prompt>
<userinput>cd python27</userinput>
</para>
<para>
<prompt>C:\Python27&gt;</prompt>
<userinput>python -V</userinput>
</para>
<para>The output should look something like:
<programlisting>
<![CDATA[Python 2.7]]>
</programlisting>However, the version string may vary.</para>
</section>
</section>
<section id="ChToolsPerl">
<title>perl</title>
<para>Perl is an interpreter based programming language. The
homepage of the perl project is:
<ulink url="http://www.perl.com" />. Perl is used to convert
various text files into usable source code. Perl version 5.6
and above should be working fine.</para>
<section id="ChToolsUnixPerl">
<title>UNIX or Win32 Cygwin: perl</title>
<para>Perl is available for most of the UNIX-like platforms
and as the perl package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If perl isn't already installed or available
as a package for your platform, you can get it at:
<ulink url="http://www.perl.com/" />.</para>
<para>After correct installation, typing at the
bash command line prompt:</para>
<para>
<prompt>$</prompt>
<userinput>perl --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[This is perl, v5.8.7 built for cygwin-thread-multi-64int
(with 1 registered patch, see perl -V for more detail)
Copyright 1987-2005, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using `man perl' or `perldoc perl'. If you have access to the
Internet, point your browser at http://www.perl.com/, the Perl Home Page.]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsWin32Perl">
<title>Win32 native: perl</title>
<para>A native Win32 perl package can be obtained from
<ulink url="http://www.ActiveState.com" />. The installation
should be straightforward.</para>
<para>After correct installation, typing at the command
line prompt (cmd.exe):</para>
<para>
<prompt>&gt;</prompt>
<userinput>perl -v</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[This is perl, v5.8.0 built for MSWin32-x86-multi-thread
(with 1 registered patch, see perl -V for more detail)
Copyright 1987-2002, Larry Wall
Binary build 805 provided by ActiveState Corp. http://www.ActiveState.com
Built 18:08:02 Feb 4 2003
...]]>
</programlisting>However, the version string may vary.</para>
</section>
</section>
<section id="ChToolsSed">
<title>sed</title>
<para>Sed it the streaming editor. It makes it easy for example
to replace specially marked texts inside a source code file.
The Wireshark build process uses this to stamp version strings
into various places.</para>
<section id="ChToolsUnixSed">
<title>UNIX or Win32 Cygwin: sed</title>
<para>Sed is available for most of the UNIX-like platforms
and as the sed package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If sed isn't already installed or available
as a package for your platform, you can get it at:
<ulink url="http://directory.fsf.org/GNU/sed.html" /></para>
<para>After correct installation, typing at the
bash command line prompt:</para>
<para>
<prompt>$</prompt>
<userinput>sed --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[GNU sed version 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsWin32Sed">
<title>Win32 native: sed</title>
<para>A native Win32 sed package can be obtained from
<ulink url="http://gnuwin32.sourceforge.net/" />. The
installation should be straightforward.</para>
</section>
</section>
<section id="ChToolsYacc">
<title>yacc (bison)</title>
<para>Bison is a free implementation of yacc.</para>
<section id="ChToolsUnixYacc">
<title>UNIX or Win32 Cygwin: bison</title>
<para>Bison is available for most of the UNIX-like platforms
and as the bison package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If GNU Bison isn't already installed or
available as a package for your platform, you can get it at:
<ulink url="http://www.gnu.org/software/bison/bison.html" />.</para>
<para>After correct installation, typing at the
bash command line prompt:</para>
<para>
<prompt>$</prompt>
<userinput>bison --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[bison (GNU Bison) 2.3
Written by Robert Corbett and Richard Stallman.
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsWin32Yacc">
<title>Win32 native: bison</title>
<para>A native Win32 yacc/bison package can be obtained from
<ulink url="http://gnuwin32.sourceforge.net/" />. The
installation should be straightforward.</para>
</section>
</section>
<section id="ChToolsLexx">
<title>flex</title>
<para>Flex is a free implementation of lexx.</para>
<section id="ChToolsUnixLexx">
<title>UNIX or Win32 Cygwin: flex</title>
<para>Flex is available for most of the UNIX-like platforms
and as the flex package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If GNU flex isn't already installed or
available as a package for your platform, you can get it at:
<ulink url="http://www.gnu.org/software/flex/" />.</para>
<para>After correct installation, typing at the
bash command line prompt:</para>
<para>
<prompt>$</prompt>
<userinput>flex --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[flex version 2.5.4]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsWin32Lexx">
<title>Win32 native: flex</title>
<para>A native Win32 lexx/flex package can be obtained from
<ulink url="http://gnuwin32.sourceforge.net/" />. The
installation should be straightforward.</para>
</section>
</section>
<section id="ChToolsSubversion">
<title>Subversion (SVN) client (optional)</title>
<para>The Wireshark project uses its own Subversion (or short
SVN) server to keep track of all the changes done to the source
code. Details about the usage of Subversion in the Wireshark
project can be found in
<xref linkend="ChSrcSVNServer" />.</para>
<para>If you want to work with the source code and are planning to
commit your changes back to the Wireshark community, it is
recommended to use a SVN client to get the latest source files.
For detailed information about the different ways to obtain the
Wireshark sources, see
<xref linkend="ChSrcObtain" />.</para>
<para>You will find more instructions in
<xref linkend="ChSrcAnon" /> on how to use the Subversion
client.</para>
<section id="ChToolsUnixSVN">
<title>UNIX or Win32 Cygwin: svn</title>
<para>SVN is available for most of the UNIX-like platforms
and as the Subversion package from the
<link linkend="ChToolsCygwin">Cygwin setup</link></para>
<para>If Subversion isn't already installed or
available as a package for your platform, you can get it at:
<ulink url="http://subversion.apache.org/" /> (together with
the server software).</para>
<para>After correct installation, typing at the
bash command line prompt:</para>
<para>
<prompt>$</prompt>
<userinput>svn --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[svn, version 1.0.5 (r9954)
compiled Jun 20 2004, 23:28:30
Copyright (C) 2000-2004 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).
...]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsWin32SVN">
<title>Win32 native: svn</title>
<para>The Subversion command line tools for Win32 can be
found at:
<ulink url="http://subversion.tigris.org/" />. This will come
with both client and server software - only the client
software will be used.</para>
<para>After correct installation, typing at the command
line prompt (cmd.exe):</para>
<para>
<prompt>&gt;</prompt>
<userinput>svn --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[svn, Version 1.4.0 (r21228)
Copyright (C) 2000-2006 CollabNet.
...]]>
</programlisting>However, the version string may vary.</para>
</section>
</section>
<section id="ChToolsSubversionGUI">
<title>Subversion (SVN) GUI client (optional)</title>
<para>Along with the traditional command-line client, several
GUI clients are available for a number of platforms, see
<ulink url="http://subversion.tigris.org/project_links.html" />.</para>
<warning>
<title>Keep Subversion program versions in sync!</title>
<para>If you are working with both command line and GUI
clients, keep the Subversion program versions in sync, at
least the major/minor versions (e.g. 1.4).</para>
</warning>
<section id="ChToolsUnixSVNGUI">
<title>UNIX or Win32 Cygwin: rapidSVN, subcommander</title>
<para>RapidSVN is a cross platform Subversion frontend based
on wxWidgets. It can be found at:
<ulink url="http://rapidsvn.tigris.org/" />. Subcommander is
another cross platform Subversion frontend. It can be found
at:
<ulink url="http://subcommander.tigris.org/" />.</para>
<para>Cygwin doesn't provide any GUI client for
Subversion.</para>
</section>
<section id="ChToolsTortoiseSVN">
<title>Win32 native: TortoiseSVN</title>
<para>A good Subversion client for Win32 can be found at:
<ulink url="http://tortoisesvn.tigris.org/" />. It will
nicely integrate into the Windows Explorer window.</para>
</section>
</section>
<section id="ChToolsDiff">
<title>diff (optional)</title>
<para>Diff is used to get a file of all differences between two
source files/trees (sometimes called a patch). The diff tool
isn't needed for building Wireshark, but it's needed if you are
going to commit your changes back to the Wireshark
community.</para>
<note>
<title>Note!</title>
<para>The recommended way to build patches is using the
Subversion client, see
<xref linkend="ChToolsSubversion" /> for details.</para>
</note>
<para>You will find more instructions in
<xref linkend="ChSrcDiff" /> on how to use the diff tool.</para>
<section id="ChToolsGNUDiff">
<title>UNIX or Win32 Cygwin: GNU diff</title>
<para>Diff is available for most of the UNIX-like platforms
and as the diffutils package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If GNU diff isn't already installed or
available as a package for your platform, you can get it at:
<ulink url="http://www.gnu.org/software/diffutils/diffutils.html" />.</para>
<para>After correct installation, typing at the
bash command line prompt:</para>
<para>
<prompt>$</prompt>
<userinput>diff --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[diff (GNU diffutils) 2.8.7
Written by Paul Eggert, Mike Haertel, David Hayes,
Richard Stallman, and Len Tower.
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsWin32Diff">
<title>Win32 native: diff</title>
<para>A native Win32 diff package can be obtained from
<ulink url="http://gnuwin32.sourceforge.net/" />. The
installation should be straightforward.</para>
<para>The Subversion client TortoiseSVN has a built-in diff
feature, see
<xref linkend="ChToolsTortoiseSVN" />. It is currently unknown
if this tool can be used to
create diff files in the required format, so other persons
can use them.</para>
</section>
</section>
<section id="ChToolsPatch">
<title>patch (optional)</title>
<para>The patch utility is used to merge a diff file into your
own source tree. This tool is only needed, if you want to apply
a patch (diff file) from someone else (probably from the
developer mailing list) to try out in your own private source
tree.</para>
<tip>
<title>Tip!</title>
<para>Unless you are in the rare case needing to apply a
patch to your private source tree, you won't need the patch
tool installed.</para>
</tip>
<para>You will find more instructions in
<xref linkend="ChSrcPatchApply" /> on how to use the patch
tool.</para>
<section id="ChToolsUnixPatch">
<title>UNIX or Win32 Cygwin: patch</title>
<para>Patch is available for most of the UNIX-like platforms
and as the patch package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>If GNU patch isn't already installed or
available as a package for your platform, you can get it at:
<ulink url="http://www.gnu.org/software/patch/patch.html" />.</para>
<para>After correct installation, typing at the
bash command line prompt:</para>
<para>
<prompt>$</prompt>
<userinput>patch --version</userinput>
</para>
<para>should result in something like:
<programlisting>
<![CDATA[patch 2.5.8
Copyright (C) 1988 Larry Wall
Copyright (C) 2002 Free Software Foundation, Inc.
This program comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of this program
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
written by Larry Wall and Paul Eggert]]>
</programlisting>However, the version string may vary.</para>
</section>
<section id="ChToolsWin32Patch">
<title>Win32 native: patch</title>
<para>A native Win32 patch package can be obtained from
<ulink url="http://gnuwin32.sourceforge.net/" />. The
installation should be straightforward.</para>
<para>The Subversion client TortoiseSVN has a built-in patch
feature, see
<xref linkend="ChToolsTortoiseSVN" />. The last time tested
(Version 1.1.0), this feature failed to apply patches known
to be ok.</para>
</section>
</section>
<section id="ChToolsWget">
<title>Win32: GNU wget (optional)</title>
<para>GNU wget is used to download files from the internet
using the command line.</para>
<para>GNU wget is available for most of the UNIX-like platforms
and as the wget package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>You will only need wget, if you want to use the Win32
automated library download, see
<xref linkend="ChLibsSetup" /> for details.</para>
<para>If GNU wget isn't already installed or
available as a package for your platform (well, for Win32 it is
available as a Cygwin package), you can get it at:
<ulink url="http://www.gnu.org/software/wget/wget.html" />.</para>
<para>If wget is trying to download files but fails to do so,
your Internet connection might use an HTTP proxy. Some Internet
providers use such a proxy and it is common in many company
networks today. Wireshark's setup script will try to discover
your proxy settings automatically, but you may need to set
the environment variable HTTP_PROXY by hand before using wget.
For example, if you are behind proxy.com which is listening on
port 8080, you have to set it to something like:</para>
<para>
<programlisting>set HTTP_PROXY=http://proxy.com:8080/</programlisting>
</para>
<para>If you are unsure about the settings, you might ask your
system administrator.</para>
</section>
<section id="ChToolsUnzip">
<title>Win32: GNU unzip (optional)</title>
<para>GNU unzip is used to, well, unzip the zip files
downloaded using the wget tool.</para>
<para>GNU unzip is available for most of the UNIX-like platforms
and as the unzip package from the
<link linkend="ChToolsCygwin">Cygwin setup</link>.</para>
<para>You will only need unzip, if you want to use the Win32
automated library download, see
<xref linkend="ChLibsSetup" /> for details.</para>
<para>If GNU unzip isn't already installed or
available as a package for your platform (well, for Win32 it is
available as a Cygwin package), you can get it at:
<ulink url="http://gnuwin32.sourceforge.net/packages/unzip.htm" />.</para>
</section>
<section id="ChToolsNSIS">
<title>Win32: NSIS (optional)</title>
<para>The NSIS (Nullsoft Scriptable Install System) is used to
generate <filename>wireshark-win32-&WiresharkCurrentVersion;.x.exe</filename>
from all the files needed to be installed, including all required DLL's and
such.</para>
<para>To install it, simply download the latest released
version (currently: 2.45) from
<ulink url="http://nsis.sourceforge.net" /> and start the
downloaded installer. You will need NSIS version 2 final or
higher.</para>
<para>You will find more instructions in
<xref linkend="ChSrcNSIS" /> on how to use the NSIS tool.</para>
</section>
</chapter>
<!-- End of WSDG Chapter Tools -->