3.6. Build Wireshark
Prev | Chapter 3. Work with the Wireshark sources | Next

## 3.6. Build Wireshark

The sources contain several documentation files. It’s a good idea to read these files first. After obtaining the sources, tools and libraries, the first place to look at is doc/README.developer. Inside you will find the latest information for Wireshark development for all supported platforms.

| Build Wireshark before changing anything
It is a very good idea to first test your complete build environment (including running and debugging Wireshark) before making any changes to the source code (unless otherwise noted).

Building Wireshark for the first time depends on your platform.

### 3.6.1. Building on Unix

Follow the build procedure in Section 2.2, “UN*X” to build Wireshark.

### 3.6.2. Windows Native

Follow the build procedure in Section 2.3, “Windows” to build Wireshark.

After the build process has successfully finished, you should find a `Wireshark.exe` and some other files in the `run\RelWithDebInfo` directory.

### 3.6.3. Build Type

CMake can compile Wireshark for several different build types:

Table 3.1. Build Types

Type | Compiler Flags | Description
--- | --- | ---
`RelWithDebInfo` | `-O2 -g -DNDEBUG` | Build with optimizations and generate debug symbols. Disables assertions and disables debug level logs
`Debug` | `-g -DWS_DEBUG` | For development, no optimization. Enables assertions and debug level logs
`Release` | `-O3 -DNDEBUG` | Optimized for speed, no debug symbols or debug level logs or assertions
`MinSizeRel` | `-Os -DNDEBUG` | Optimized for size, no debug symbols or debug level logs or assertions

The default is `RelWithDebInfo`, which provides a good compromise of some optimization (`-O2`) along with including debug symbols (`-g`) for release builds. For normal development coding you probably want to be using `Debug` build type or set -DENABLE_DEBUG=On, to enable full logging capabilities and debug code.

CMake will automatically add the -DNDEBUG option to certain build types. This macro is used to disable assertions but it can be overruled using ENABLE_ASSERT, which can be used to unconditionally enable assertions if defined.

To change the build type, set the CMake variable `CMAKE_BUILD_TYPE`, e.g.:

    $ cmake .. -DCMAKE_BUILD_TYPE=Debug

or on Windows,

    > msbuild /m /p:Configuration=Debug Wireshark.sln

Prev | Up | Next
3.5. Update Your Wireshark Sources | Home | 3.7. Run Your Version Of Wireshark