ToolsTool installation
This chapter will describe the tool installation of the various tools
used to build Ethereal. The next chapters will explain the tool
usage for some of the specific development tasks.
Several different tools are needed to build Ethereal. These tools have
their roots in the unix environment, but win32 ports are also
available. Therefore the tools are available in three different
"flavours":
Unix: as described above, the tools should be commonly available on the
supported unix platforms
Win32 cygwin: cygwin provides a unix emulation layer with a lot
of unix based tools on the win32 platform
Win32 native: native Win32 tools, no emulation required
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 elsewhere, as these tools are
commonly used. The following will only do a very brief description of
what the particular tool is doing, how it is used in the Ethereal project
and how it can be installed and (rudimentary) tested.
At the end of this chapter, some recommendations are given, for the
easiest way to get your development platform up and running.
Win32: Cygwin
Cygwin provides a unix emulation layer with a lot of unix based tools
on the win32 platform. Although cygwin consists of several
seperate packages, the installation and update is done through only a
single
setup.exe, which acts similar like other unix package managers (like
the RedHat Package Manager for example).
You will find this network based setup.exe at: click on one
of the "Install Cygwin now" appearances, this will start the download
of the setup.exe.
After the download completed, start this setup.exe on your machine. It
will ask you for some
settings, the defaults should usually work well. The setup will
then download and install a basic set of packages.
Under: "Start -> Programs -> Cygwin -> Cygwin Bash Shell" you
should now be able to start a new cygwin bash shell (similar to the
command line in win32, but more powerful).
If you want to add additional cygwin packages, you should start the
setup.exe again, and select them in the packages window.
C compilerUnix: GCC (GNU compiler collection)
The gcc C compiler is used for all unix-like platforms.
XXX: is this true?
Win32 cygwin: GCC (GNU compiler collection)
Although some effort is currently made to use gcc from the cygwin
environment, the
mainline is still using Microsoft Visual Studio's compiler.
Win32 native: Microsoft Visual C compilerNote!
The Microsoft Visual Studio is not free software.
This is a tool you have to buy before you use it!
The mainline for generating Ethereal on the windows platform, is using
the Microsoft Visual Studio version 6 compiler cl.exe (and it's nmake,
as described below).
Warning!
There are problems reported with the more recent "Visual
Studio .net" version, as it requires to ship a XXX.dll together with the
compiled exe, which might make it incompatible with the GPL.
makeUnix: GNU make
XXX
Win32 cygwin: GNU make
Although some effort is made to use make from the cygwin environment,
the mainline is still using Microsoft Visual Studio's nmake.
Win32 native: nmake
nmake is part of the Microsoft Visual Studio suite, see comment above.
Instead of using the 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 simultaneous with the gcc
toolchain makefile.am files as both filetypes 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.
python
Python is an interpreter based programming language. The homepage of
the python project is: .
Python is used to XXX. Python version 2.2 and above should be working
fine.
Unix: python
XXX
Win32 cygwin: python
Python is available as the python
package from the cygwin setup.
After correct installation, typing inside the cygwin bash:
$ python -V
should result in something like:
Python 2.3.3
However, the version string may vary.
Win32 native: python
Have a look at
to download the latest stable release. You can download a setup there,
which will install the python system typically into:
C:\python23 or similiar.
perl
Perl is an interpreter based programming language. The homepage of the
perl project is: .
Perl is used to XXX. Perl version XXX and above should be working fine.
Unix: perl
XXX
Win32 cygwin: perl
Perl is available as the perl
package from the cygwin setup.
Win32 native: perl
A native Win32 perl package can be obtained from
. The
installation should be straightforward.
After correct installation, typing inside the command line (cmd.exe):
>perl -v
should result in something like:
However, the version string may vary.
sed
Sed it the streaming editor. It makes it easy for example to replace
specially marked texts inside a source code file. The Ethereal build
process uses this to stamp version strings into various places.
Unix: sed
XXX
Win32 cygwin: sed
Sed is available as the sed
package from the cygwin setup.
After correct installation, typing inside the cygwin bash:
$sed --version
should result in something like:
However, the version string may vary.
Win32 native: sed
The authors don't know of any working win32 native sed implementation.
diff (optional)
Diff is used to get a file of all differences between two source
files/trees. The diff tool isn't needed for building ethereal, but it's
needed if you are going to commit your changes back to the ethereal
community.
Unix: diff
XXX
Win32 cygwin: GNU diff
Diff is available as the diff
package from the cygwin setup.
After correct installation, typing inside the cygwin bash:
$diff --version
should result in something like:
However, the version string may vary.
Win32 native: diff
The authors don't know of any working win32 native diff implementation.
patch (optional)
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 diff file from
someone else (probably from the developer mailing list) to your own
source tree.
Unix: patch
XXX
Win32 cygwin: patch
Patch is available as the patch
package from the cygwin setup.
After correct installation, typing inside the cygwin bash:
$patch --version
should result in something like:
However, the version string may vary.
Win32 native: patch
I don't know of any working win32 native patch implementation.
yacc (bison)
XXX
lexx (flex)
XXX
Win32: wget
XXX http_proxy
Win32: NSIS
The NSIS (Nullsoft Scriptable Install System) is used to generate a
setup.exe from all the files needed to be installed, including all
required DLL's and such.
To install it, simply download the latest final version (currently: 2.0
final) from
and start the downloaded installer.
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).
Subversion (SVN) client (optional)
The Ethereal project uses subversion (or short SVN) to keep track of
all the changes done in the source code. The project has switched from
CVS to SVN some time ago. XXX add link to "Obtaining the sources" If
you want to work with the source code and planning to commit your
changes back Ethereal, it is recommended to use a SVN client to get the
latest source files.
There is a book on subversion available:
A good subversion client for Win32 can be found at:
XXX add more text here.
Tool summary for win32 platforms
The recommended tools are highlighted in bold face.
The mandatory toolsToolCygwin packetWin32 nativeC compilergccMSVCmakemakeMSVC nmakepython interpreter (XXX: which one is recommended?)pythonperl interpreter (XXX: which one is recommended?)perlsedsed-bashbash-
The optional toolsToolCygwin packetWin32 nativediffdiff-patchpatch-nsis-