A quick setup guide for Win32 and Win64 with recommended configuration.
Unless you know exactly what you are doing, you should strictly follow the recommendations below. They are known to work and if the build breaks, please re-read this guide carefully.
Known traps are:
PowerShell 2.0 or later is required for building Wireshark and the NSIS package. Windows 7 and later include compatible versions. It is also required by Chocolatey.
If you are running Windows Vista and have thus far managed to not install PowerShell 2.0, either directly or via anything that requires it, you must now install PowerShell 2.0. You can download it from https://www.microsoft.com/powershell
You need to install, in exactly this order:
Uncheck all the optional components (unless you want to use them for purposes other than Wireshark).
You can use Chocolatey to install Visual Studio:
PS$>choco install VisualStudioCommunity2013
You can use other Microsoft C compiler variants, but VS2013 is used to build the development releases and is the preferred option. It’s possible to compile Wireshark with a wide range of Microsoft C compiler variants. For details see Section 4.6, “Microsoft compiler toolchain (Windows native)”.
|Is Win32.Mak missing?|
For VS2013 (and later) Microsoft has left out a required file from the include files to build with nmake. To fix this copy Win32.Mak from the Win 7 SDK into an appropriate path for use with VS2013, e.g.
C:\> xcopy "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\Win32.Mak" ^ "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include"
You may have to do this as Administrator.
Compiling with gcc or Clang is not recommended and will certainly not work (at least not without a lot of advanced tweaking). For further details on this topic, see Section 4.5, “GNU compiler toolchain (UNIX only)”. This may change in future as releases of Visual Studio add more cross-platform support.
Why is this recommended? While this is a huge download, Visual Studio 2013 Community Edition is the only free (as in beer) versions that includes the Visual Studio integrated debugger. Visual Studio 2013 is also used to create official Wireshark builds, so it will likely have fewer development-related problems.
For VS2010 You will need some extra items:
Windows SDK for Windows 7, if you want to build 64-bit binaries for Windows 7: Download and install "Microsoft Windows SDK for Windows 7."
In case the install of the SDK fails go to software management and remove the VC++ 2010 runtime and redist packages (don’t worry, they will be added back via the service pack later). If installation of the SDK still fails, there may be a permission problem. See here for a solution.
The main Wireshark application uses the Qt windowing toolkit. To install Qt download the Online Installer from the Qt Project download page and select a component that matches your target system and compiler. For example, the “msvc2013 64-bit OpenGL” component is used to build the official 64-bit packages.
Note that the Qt package also includes the Qt Creator IDE, which is useful for designing graphical components and includes an interactive debugger. You’ll need to build Wireshark using nmake before you’ll be able to build the Wireshark project (uiqtWireshark.pro), however.
You can also use Chocolatey to install Qt (there are packages for x86 & x64 and various MSVC compilers, e.g.
PS$>choco install qt-sdk-windows-x86-msvc2013_opengl
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, if the package has a "Skip" item in the "New" column, click on the "Skip" item so it shows a version number for:
You might also have to install
if installing Devel/bison doesn’t provide a working version of Bison. If m4 is missing bison will fail.
After clicking the Next button several times, the setup will then download and install the selected packages (this may take a while).
Why is this recommended? Cygwin’s bash version is required, as no native Win32 version is available. As additional packages can easily be added, Perl and other packages are also used.
Alternatively you can install Cygwin and its packages using Chocolatey:
PS$>choco install cygwin PS$>choco install cyg-get PS$>choco install sed asciidoc [...] -source cygwin
Chocolatey installs Cygwin in C:\tools\cygwin by default.
You can use Chocolatey’s Win flex-bison packages rather than the Cygwin Bison and Flex package:
PS$>choco install winflexbison
Get the Python 2.7 installer from http://python.org/download/ and install Python into the default location (C:\Python27).
Why is this recommended? Cygwin’s Python package doesn’t work on some machines, so the Win32 native package is recommended (and it’s faster). Note that Python 3.x isn’t currently supported.
Alternatively you can install Python using Chocolatey:
PS$>choco install python2
Chocolatey installs Python 2 in C:\tools\python2 by default.
Please note that the following is not required to build Wireshark but can be quite helpful when working with the sources.
Working with the Git source repositories is highly recommended, see Section 3.3, “Obtain the Wireshark sources”. It is much easier to update a personal source tree (local repository) with Git rather than downloading a zip file and merging new sources into a personal source tree by hand. It also makes first-time setup easy and enables the Wireshark build process to determine your current source code revision.
There are several ways in which Git can be installed. Most packages are available at the URLs below or via Chocolatey. Note that many of the GUI interfaces depend on the command line version.
The official command-line installer is available at http://msysgit.github.io/.
Git Extensions is a native Windows graphical Git client for Windows. You can download the installer from http://code.google.com/p/gitextensions/.
TortoiseGit is a native Windows graphical Git similar to TortoiseSVN. You can download the installer from http://code.google.com/p/tortoisegit/.
The command line client can be installed (and updated) using Chocolatey:
PS$> choco install git
A list of other GUI interfaces for Git can be found at http://git-scm.com/downloads/guis
|Make sure everything works|
It’s a good idea to make sure Wireshark compiles and runs at least once before you start hacking the Wireshark sources for your own project. This example uses Git Extensions but any other Git client should work as well.
Download sources Download Wireshark sources into C:\Development\wireshark using either the command line or Git Extensions:
Using the command line:
>cd C:\Development >git clone https://code.wireshark.org/review/wireshark
Using Git extensions:
In the main screen select Clone repository. Fill in the following:
Repository to clone:
Destination: Your top-level development directory, e.g.
Subdirectory to create: Anything you’d like. Usually
|Check your paths|
Make sure your repository path doesn’t contain spaces.
From the Start Menu (or Start Screen), navigate to the Visual Studio 2013 → Visual Studio Tools directory and choose the Command Prompt appropriate for the build you wish to make, e.g. VS2013 x86 Native Tools Command Prompt for a 32-bit version, VS2013 x64 Native Tools Command Prompt for a 64-bit version.
|Pin the items to the Task Bar|
Pin the Command Prompt you use to the Task Bar for easy access.
All subsequent operations take place in this Command Prompt window.
Set environment variables to control the build.
Set the following environment variables, using paths and values suitable for your installation:
> set CYGWIN=nodosfilewarning > set WIRESHARK_BASE_DIR=C:\Development > set WIRESHARK_TARGET_PLATFORM=win32 or win64 as required > set QT5_BASE_DIR=C:\Qt\Qt5.3.0\5.3\msvc2013 > set WIRESHARK_VERSION_EXTRA=-YourExtraVersionInfo
If you are using a version of Visual Studio earlier than VS2012 then you must set an additional env var, e.g. for VS2010 set the following:
> set VisualStudioVersion=10.0
Setting these variables could be added to a batch file to be run after you open the Visual Studio Tools Command Prompt.
Change to the correct source directory
> cd C:\Development\wireshark
to jump into the source directory
After you’ve installed the Wireshark sources (see Section 3.3, “Obtain the Wireshark sources”), you can
check the correct installation of all tools by using the
verify_tools target of
Makefile.nmake from the source package.
You will need the Wireshark sources and some tools (nmake, bash) installed, before this verification is able to work.
Enter at the Visual Studio Command prompt line:
> nmake -f Makefile.nmake verify_tools
This will check for the various tools needed to build Wireshark:
Microsoft (R) Program Maintenance Utility Version 12.00.21005.1 Copyright (C) Microsoft Corporation. All rights reserved. ERROR: The contents of 'E:\Wireshark\Wireshark-win32-libs\current_tag.txt' is (unknown). It should be 2014-10-01. Checking for required applications: cl: /cygdrive/c/Program Files (x86)/Microsoft Visual Studio 12.0/VC/BIN/cl link: /cygdrive/c/Program Files (x86)/Microsoft Visual Studio 12.0/VC/BIN/link nmake: /cygdrive/c/Program Files (x86)/Microsoft Visual Studio 12.0/VC/BIN/nmake bash: /usr/bin/bash bison: /usr/bin/bison flex: /usr/bin/flex env: /usr/bin/env grep: /usr/bin/grep /usr/bin/find: /usr/bin/find peflags: /usr/bin/peflags perl: /usr/bin/perl C:\Python27\python.exe: /cygdrive/c/Python27/python.exe C:\Qt\Qt5.3.0\5.3\msvc2013\bin\qmake: /cygdrive/c/Qt/Qt5.3.0/5.3/msvc2013/bin/qmake sed: /usr/bin/sed unzip: /usr/bin/unzip wget: /usr/bin/wget
The "ERROR" at the start occurs because you haven’t yet downloaded the third party libraries and it can be ignored at this stage. If you have problems with all the first three items (cl, link, nmake), check that you opened a Visual Studio Command Prompt Section 2.2.9, “Open a Visual Studio Command Prompt”.
link command is defined both in Cygwin and in MSVC, each
with completely different functionality. You’ll need the MSVC link. If your link
command looks something like:
/usr/bin/link the link command of Cygwin takes
precedence over the MSVC one. To fix this, you can change your
setting or simply rename
link.exe in Cygwin. If you rename it, make sure to
remember that a Cygwin update may provide a new version of it.
Make sure that the other tools found are the Cygwin versions. Some build
problems have been caused by incompatible versions of
unzip provided by other installed applications.
> nmake -f Makefile.nmake setup
to download and install libraries using
wget. This may take a while.
Note that 32-bit versions of the software require 32-bit versions of the
libraries and that 64-bit versions require 64-bit libraries. The build process
creates independent directories for each as needed. See
Section 2.2.9, “Open a Visual Studio Command Prompt”for how to open the required Visual Studio Command Prompt and
WIRESHARK_TARGET_PLATFORM to select either a 32- or 64-bit build.
Now it’s time to build Wireshark!
> nmake -f Makefile.nmake all
to build Wireshark.
C:\Development\wireshark\wireshark-qt-release\Wireshark.exeand make sure it starts.
If compilation fails for suspicious reasons after you changed some source files try to "distclean" the sources and make "all" again
You can debug using the Visual Studio Debugger or WinDbg. See the section on using the Debugger Tools.
Detailed information to build these guides can be found in the file docbook\README.txt in the Wireshark sources.
Note: You should have successfully built Wireshark before doing the following.
If you want to build your own wireshark-win32-2.1.x-myprotocol123.exe, you’ll need NSIS.
NSIS: Download and install NSIS
You may check the
MAKENSIS setting in the file config.nmake in the Wireshark
sources. Note that the 32-bit version of NSIS will work for both 32-bit and
64-bit versions of Wireshark.
Note: If you do not yet have a copy of vcredist_x86.exe or vcredist_x64.exe in ./wireshark-winXX-libs (where XX is 32 or 64) you will need to download the appropriate file and place it in ./wireshark-winXX-libs before starting this step.
If building an x86 version using a Visual Studio "Express" edition or an x64 version with any edition, then you must have the appropriate vcredist file for your compiler in the support libraries directory (vcredist_x86.exe in wireshark-32-libs or vcredist_x64.exe in wireshark-win64-libs).
The files can be located in the Visual Studio install directory for non-Express edition builds, or downloaded from Microsoft for Expresss edition builds.
Note you must use the correct version of vcredist for your compiler, unfortunately they all have the same name (vcredist_x86.exe or vcredist_x64.exe). You can use Windows Explorer and examine the Properties >> Details tab for a vcredist file to determine which compiler version the file is for use with.
> nmake -f Makefile.nmake packaging
to build a Wireshark installer.
to test your new installer. It’s a good idea to test on a different machine than the developer machine. Note that if you’ve built an x64 version, the installer will be named accordingly.