Part I. Wireshark Build Environment

Wireshark Build Environment

The first part describes how to set up the tools, libraries and sources needed to generate Wireshark and how to do some typical development tasks.

Table of Contents

1. Introduction
1.1. Introduction
1.2. What Is Wireshark?
1.3. Supported Platforms
1.3.1. Unix And Unix-like Platforms
1.3.2. Microsoft Windows
1.4. Development And Maintenance Of Wireshark
1.4.1. Programming Languages Used
1.4.2. Open Source Software
1.5. Releases And Distributions
1.5.1. Binary Distributions
1.5.2. The Source Code Distribution
1.6. Automated Builds (GitLab CI)
1.6.1. What Do The Automated Builds Do?
1.7. Reporting problems and getting help
1.7.1. Website
1.7.2. Wiki
1.7.3. FAQ
1.7.4. Other sources
1.7.5. Q&A Site
1.7.6. Mailing Lists
1.7.7. Bug Database (GitLab Issues)
1.7.8. Reporting Problems
1.7.9. Reporting Crashes on UNIX-like platforms
1.7.10. Reporting Crashes on Windows platforms
2. Setup and Build Instructions
2.1. UN*X
2.1.1. Build environment setup
2.1.2. Building
2.1.3. Optional: Install
2.1.4. Optional: Create User’s and Developer’s Guide
2.1.5. Optional: Create an installable or source code package
2.1.6. Troubleshooting during the build and install on Unix
2.2. Windows: Using Microsoft Visual Studio
2.2.1. Recommended: Install Chocolatey
2.2.2. Install Microsoft Visual Studio
2.2.3. Install Qt
2.2.4. Install Python
2.2.5. Install Git
2.2.6. Install CMake
2.2.7. Install Asciidoctor, Xsltproc, And DocBook
2.2.8. Install winflexbison
2.2.9. Optional: Install Perl
2.2.10. Install and Prepare Sources
2.2.11. Open a Visual Studio Command Prompt
2.2.12. Generate the build files
2.2.13. Build Wireshark
2.2.14. Debug Environment Setup
2.2.15. Optional: Create User’s and Developer’s Guide
2.2.16. Optional: Create a Wireshark Installer
2.3. Windows: Using MinGW-w64 with MSYS2
2.3.1. Building from source
2.3.2. Building an .exe installer
2.3.3. Comparison with MSVC toolchain
2.4. Windows: Cross-compilation using Linux
2.4.1. Using Fedora Linux
2.4.2. Using Arch Linux
3. Work with the Wireshark sources
3.1. Introduction
3.2. The Wireshark Git repository
3.2.1. Git Naming Conventions
3.3. Browsing And Searching The Source Code
3.4. Obtaining The Wireshark Sources
3.4.1. Git Over SSH Or HTTPS
3.4.2. Development Snapshots
3.4.3. Official Source Releases
3.5. Update Your Wireshark Sources
3.5.1. Update Using Git
3.6. Build Wireshark
3.6.1. Building on Unix
3.6.2. Windows Native
3.6.3. Build Type
3.7. Run Your Version Of Wireshark
3.7.1. Unix-Like Platforms
3.7.2. Windows Native
3.8. Debug Your Version Of Wireshark
3.8.1. Wireshark Logging
3.8.2. Traps Set By Logging
3.8.3. Logging APIs
3.8.4. Unix-Like Platforms
3.8.5. Windows Native
3.9. Make Changes To The Wireshark Sources
3.10. Contribute Your Changes
3.10.1. Creating Merge Requests
3.10.2. Updating Merge Requests
3.10.3. Some Tips For A Good Patch
3.10.4. Writing a Good Commit Message
3.10.5. Code Requirements
3.10.6. Backporting A Change
3.11. Binary Packaging
3.11.1. Packaging Guidelines
3.11.2. Debian: .deb Packages
3.11.3. Red Hat: .rpm Packages
3.11.4. macOS: .dmg Packages
3.11.5. Windows: NSIS .exe Installer
3.11.6. Windows: PortableApps .paf.exe Package
3.12. Mime Types
3.12.1. Display Filter
3.12.2. Coloring Rules
3.12.3. Filter List
3.12.4. Column List
4. Tool Reference
4.1. Introduction
4.2. Chocolatey
4.3. CMake
4.4. GNU Compiler Toolchain (UNIX And UNIX-like Platforms)
4.4.1. gcc (GNU Compiler Collection)
4.4.2. gdb (GNU Project Debugger)
4.4.3. make (GNU Make)
4.4.4. Ninja
4.5. Microsoft compiler toolchain (Windows native)
4.5.1. Official Toolchain Packages And Alternatives
4.5.2. Visual C++ 2022 Community Edition
4.5.3. cl.exe (C Compiler)
4.5.4. link.exe (Linker)
4.5.5. Visual C++ Runtime “Redistributable” Files
4.5.6. Windows Platform SDK
4.6. Documentation Toolchain
4.6.1. Asciidoctor
4.6.2. DocBook XML and XSL
4.6.3. xsltproc
4.7. Debugger
4.7.1. Visual Studio Integrated Debugger
4.7.2. Debugging Tools For Windows
4.8. bash
4.9. Python
4.10. Flex
4.11. Git client
4.12. Git Powershell Extensions (Optional)
4.13. Git GUI Client (Optional)
4.14. Perl (Optional)
4.15. patch (Optional)
4.16. Windows: NSIS (Optional)
4.17. Windows: WiX Toolset (Optional)
4.18. Windows: PortableApps (Optional)
5. Library Reference
5.1. Introduction
5.2. Windows Automated Library Download
5.3. Qt
5.4. GLib And Supporting Libraries
5.5. c-ares
5.6. SMI (Optional)
5.7. zlib (Optional)
5.8. libpcap or Npcap (Optional, But Strongly Recommended)
5.9. GnuTLS (Optional)
5.10. Gcrypt
5.11. Kerberos (Optional)
5.12. Lua (Optional)
5.13. MaxMindDB (Optional)
5.14. WinSparkle (Optional)