This wiki has been migrated to https://gitlab.com/wireshark/wireshark/-/wikis/home and is now deprecated. Please use that site instead.
Differences between revisions 1 and 29 (spanning 28 versions)
Revision 1 as of 2005-02-02 21:25:55
Size: 1346
Editor: UlfLamping
Comment: first content from a Mail from Laurent Rabret
Revision 29 as of 2007-01-13 12:23:44
Size: 6620
Editor: UlfLamping
Comment: update cygwin.bat changes to the latest PSDK
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= MSVC7 = = Building Wireshark using Microsoft VC 7 and above =
Line 3: Line 3:
The mainline to compile Ethereal under Windows is using Microsoft Visual Studio Version 6. '''The info on this page is experimental. The main line to compile Wireshark under Windows is still using Microsoft Visual C++ Version 6, see the Developer's Guide for details.'''
Line 5: Line 5:
Here are some tips to compile Ethereal under newer compiler versions: This page describes how Wireshark can be compiled with recent Microsoft compilers (Version 7 and higher):
Line 7: Line 7:
to qoute a mail from Laurent Rabret (see http://www.ethereal.com/lists/ethereal-dev/200501/msg00636.html):
---------------------------------
To compile with the .NET SDK, you'll have to install the platform SDK
(available for free).
 * Visual C++ .NET 2002 (C++ 7.0)
 * Visual C++ .NET 2003 (C++ 7.1)
 * Visual C++ .NET 2005 (C++ 8.0) (Express Edition [http://msdn.microsoft.com/vstudio/express/visualc/ free download])
 * .NET Framework SDK 1.1 (C++ 7.1) ([http://www.microsoft.com/downloads/details.aspx?FamilyID=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=en free download])
 * .NET Framework 2.0 SDK (C++ 8.0) ([http://www.microsoft.com/downloads/details.aspx?FamilyID=fe6f2099-b7b4-4f47-a244-c96d69c35dec&DisplayLang=en free download])
Line 12: Line 13:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ For the different Studios, see: ([http://en.wikipedia.org/wiki/Microsoft_Visual_Studio])
Line 14: Line 15:
You may encounter linking problems caused by "bad" parameters in config.nmake. I
never sent a patch to fix this because I'm not sure whether or not it
impacts VS6 compilation.
I replaced:
1) LOCAL_CFLAGS=/Zi /W3 by LOCAL_CFLAGS= /Zi /DWIN32 /W3
2) LOCAL_LDFLAGS=/DEBUG by LOCAL_LDFLAGS=/DEBUG /DEFAULTLIB:msvcrt
/NODEFAULTLIB:libc
One of the reasons for this is that the myriad of [http://anonsvn.wireshark.org/wireshark-win32-libs/tags/ Win32 support lib] 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:
Line 22: Line 17:
While compiling plugins, you might also encounter problems. For these
plugins, in the Makefile.nmake file change
LDFLAGS = /NOLOGO /INCREMENTAL:no /MACHINE:I386 $(LOCAL_LDFLAGS)
by
LDFLAGS = /NOLOGO /INCREMENTAL:no /MACHINE:I386
...I know, that's not very clean ;-)
 1. 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 [http://msdn.microsoft.com/visualc/vctoolkit2003/eula.aspx Visual Studio 2003 Toolkit EULA], which places redistribution restrictions only on SOURCE CODE SAMPLES which accompany the toolkit.
Line 29: Line 19:
 1. 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 [http://www.gnu.org/licenses/gpl-faq.html#WindowsRuntimeAndGPL GPL FAQ] explicitly addresses this issue.
So due to this, the build process under newer versions of the Microsoft build environment does not work "out of the box". However, with a little work it is not only possible to build Wireshark under Visual Studio 2003, but also under the combination of the freely available [http://www.microsoft.com/downloads/details.aspx?FamilyID=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=en .NET Framework SDK] and the [http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ Platform SDK].
Line 30: Line 22:
At last, don't forget to include a line such this: == Prerequisites ==
 * [http://www.microsoft.com/downloads/details.aspx?FamilyID=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=en .NET Framework SDK] command-line compiler, linker, ...
 * [http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ Platform SDK] nmake, header files, ... (you will need a Microsoft Internet Explorer 5.0 or later to download this)
 * [http://www.cygwin.com Flex, bison and python, preferably from Cygwin]
 * To be able to use the [#setup automated library downloader] later on (using [http://www.cygwin.com Cygwin]), all of the following Cygwin packages need to be installed:
  * Archive>Unzip
  * Base>bash
  * Base>coreutils
  * Base>findutils
  * Base>grep
  * Base>sed
  * Base>which
  * Devel>bison
  * Devel>flex
  * Interpreters>Perl
  * Interpreters>Python
  * Web>wget
 * [http://www.zlib.net Zlib 1.2.3 source]
== Setup ==
If you intend to build from the free SDK components as opposed to Visual Studio 7, you will need to call the two path/environment scripts for the .NET SDK and the Plaform SDK. One way to do this is to edit your cygwin.bat startup script and add:
Line 32: Line 43:
File "c:\program files\Microsoft Visual Studio .NET
2003\Common7\IDE\msvcr71.dll"
{{{
call "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\SetEnv.Cmd"
call "C:\Program Files\Microsoft.NET\SDK\v1.1\Bin\sdkvars.bat"
}}}
Line 35: Line 48:
... in your ethereal.nsi script (if you want to create an installer)
---------------------------------
Or, if you are just using VS7, add :

{{{
call "c:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"}}}

to cygwin.bat. Make sure all SDK/Toolkit paths precede your cygwin paths. In particular, {{{which link}}} from within cygwin should give you the SDK version.

At this point you can run [[Anchor(setup)]]{{{nmake -f Makefile.nmake setup}}} from within the wireshark src dir.

== Compilation ==
At this point you should cleanup things first (removing UNIX related config.h and alike) by running:

{{{nmake -f Makefile.nmake distclean}}}

Then you can start building with:

{{{nmake -f Makefile.nmake all}}}

== Building ==
The ideal way to build is to create an installer. Add the following to '''packaging/nsis/wireshark.nsi''':

{{{
File "c:\program files\Microsoft Visual Studio .NET 2003\Common7\IDE\msvcr71.dll"
}}}
Then run {{{nmake -f Makefile.nmake packaging}}}

This will build an wireshark-setup executable that will install all the libs you need to run it.

----------
 . This wiki entry was based upon [http://thread.gmane.org/gmane.network.wireshark.devel/12491 this mailinglist thread].
== Discussion ==
Can someone knowledgeable add a section about how to compile a dissector ? ''Manfred Nelles''

Should we split this page into separate pages for building with MSVC7 and the free tools?

Should someone attempt to create a step-by-step guide for compiling, or is that doomed to fail due to differences in system setup? ''Erik Sternerson''

The cygwin tools are described in the developers guide, so it might be a better way to link to the developer's guide (and probably update it) and link from here instead of duplicating information in the wiki. The developer's guide was an attempt to provide detailed information about setting up a build environment. I don't know if another step-by-step guide is a good idea. - ''UlfLamping''

''__Some Notes on my experience using this page__''

My setup: Cygwin + all free tools.

 * Microsoft (R) Incremental Linker Version 7.10.3077
 * Microsoft (R) 32-bit C/C++ Standard Compiler Version 13.10.3077 for 80x86
Comments on the '''Setup''' section

By default Cygwin seems to put the MS PATH values at the end of the cygwin PATH variable. To make sure all SDK/Toolkit paths preceded my cygwin paths I just added the following to my .bash_profile. Saving the ORIGPATH is optional.

{{{
# Move MS compiler stuff to the front for Wireshark
ORIGPATH=$PATH
MSPATH="`echo $PATH | tr : '\n' | grep Microsoft | tr '\n' :`"
UPATH="`echo $PATH | tr : '\n' | grep -v Microsoft | tr '\n' :`"
PATH="`echo $MSPATH:$UPATH | sed -e s/::\*/:/ -e s/^:// -e s/:\$//`"
}}}
Currently I can build Wireshark, but it blows up while initializing dissectors. I'll add the solution to that when I find it... - ''AndrewFeren''

Building Wireshark using Microsoft VC 7 and above

The info on this page is experimental. The main line to compile Wireshark under Windows is still using Microsoft Visual C++ Version 6, see the Developer's Guide for details.

This page describes how Wireshark can be compiled with recent Microsoft compilers (Version 7 and higher):

For the different Studios, see: ([http://en.wikipedia.org/wiki/Microsoft_Visual_Studio])

One of the reasons for this is that the myriad of [http://anonsvn.wireshark.org/wireshark-win32-libs/tags/ Win32 support lib] 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:

  1. 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 [http://msdn.microsoft.com/visualc/vctoolkit2003/eula.aspx Visual Studio 2003 Toolkit EULA], which places redistribution restrictions only on SOURCE CODE SAMPLES which accompany the toolkit.

  2. 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 [http://www.gnu.org/licenses/gpl-faq.html#WindowsRuntimeAndGPL GPL FAQ] explicitly addresses this issue.

So due to this, the build process under newer versions of the Microsoft build environment does not work "out of the box". However, with a little work it is not only possible to build Wireshark under Visual Studio 2003, but also under the combination of the freely available [http://www.microsoft.com/downloads/details.aspx?FamilyID=9B3A2CA6-3647-4070-9F41-A333C6B9181D&displaylang=en .NET Framework SDK] and the [http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ Platform SDK].

Prerequisites

Setup

If you intend to build from the free SDK components as opposed to Visual Studio 7, you will need to call the two path/environment scripts for the .NET SDK and the Plaform SDK. One way to do this is to edit your cygwin.bat startup script and add:

call "C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\SetEnv.Cmd"
call "C:\Program Files\Microsoft.NET\SDK\v1.1\Bin\sdkvars.bat"

Or, if you are just using VS7, add :

call "c:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\vsvars32.bat"

to cygwin.bat. Make sure all SDK/Toolkit paths precede your cygwin paths. In particular, which link from within cygwin should give you the SDK version.

At this point you can run Anchor(setup)nmake -f Makefile.nmake setup from within the wireshark src dir.

Compilation

At this point you should cleanup things first (removing UNIX related config.h and alike) by running:

nmake -f Makefile.nmake distclean

Then you can start building with:

nmake -f Makefile.nmake all

Building

The ideal way to build is to create an installer. Add the following to packaging/nsis/wireshark.nsi:

File "c:\program files\Microsoft Visual Studio .NET 2003\Common7\IDE\msvcr71.dll"

Then run nmake -f Makefile.nmake packaging

This will build an wireshark-setup executable that will install all the libs you need to run it.


Discussion

Can someone knowledgeable add a section about how to compile a dissector ? Manfred Nelles

Should we split this page into separate pages for building with MSVC7 and the free tools?

Should someone attempt to create a step-by-step guide for compiling, or is that doomed to fail due to differences in system setup? Erik Sternerson

The cygwin tools are described in the developers guide, so it might be a better way to link to the developer's guide (and probably update it) and link from here instead of duplicating information in the wiki. The developer's guide was an attempt to provide detailed information about setting up a build environment. I don't know if another step-by-step guide is a good idea. - UlfLamping

Some Notes on my experience using this page

My setup: Cygwin + all free tools.

  • Microsoft (R) Incremental Linker Version 7.10.3077
  • Microsoft (R) 32-bit C/C++ Standard Compiler Version 13.10.3077 for 80x86

Comments on the Setup section

By default Cygwin seems to put the MS PATH values at the end of the cygwin PATH variable. To make sure all SDK/Toolkit paths preceded my cygwin paths I just added the following to my .bash_profile. Saving the ORIGPATH is optional.

# Move MS compiler stuff to the front for Wireshark
ORIGPATH=$PATH
MSPATH="`echo $PATH | tr : '\n' | grep Microsoft | tr '\n' :`"
UPATH="`echo $PATH | tr : '\n' | grep -v Microsoft | tr '\n' :`"
PATH="`echo $MSPATH:$UPATH | sed -e s/::\*/:/ -e s/^:// -e s/:\$//`"

Currently I can build Wireshark, but it blows up while initializing dissectors. I'll add the solution to that when I find it... - AndrewFeren

Development/MSVC7 (last edited 2020-03-20 21:59:16 by GuyHarris)