diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-09-19 04:14:53 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-09-19 04:14:53 +0000 |
commit | a86c5f7cae7ec9a3398300555a0b644689d946a1 (patch) | |
tree | 39fe4b107c71174fd1e8a8ceb9a4d2aa14116248 /docbook/wsdg_src/wsdg_quick_setup.adoc | |
parent | Releasing progress-linux version 4.2.6-1~progress7.99u1. (diff) | |
download | wireshark-a86c5f7cae7ec9a3398300555a0b644689d946a1.tar.xz wireshark-a86c5f7cae7ec9a3398300555a0b644689d946a1.zip |
Merging upstream version 4.4.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'docbook/wsdg_src/wsdg_quick_setup.adoc')
-rw-r--r-- | docbook/wsdg_src/wsdg_quick_setup.adoc | 965 |
1 files changed, 0 insertions, 965 deletions
diff --git a/docbook/wsdg_src/wsdg_quick_setup.adoc b/docbook/wsdg_src/wsdg_quick_setup.adoc deleted file mode 100644 index 15458bea..00000000 --- a/docbook/wsdg_src/wsdg_quick_setup.adoc +++ /dev/null @@ -1,965 +0,0 @@ -// WSDG Chapter Setup - -[#ChapterSetup] - -== Setup and Build Instructions - -[#ChSetupUNIX] - -=== UN*X - -[#ChSetupUNIXBuildEnvironmentSetup] - -==== Build environment setup - -The following must be installed in order to build Wireshark: - -* a C compiler and a C++ compiler; -* the Flex lexical analyzer; -* Python 3; -* CMake; -* several required libraries. - -Either make or Ninja can be used to build Wireshark; at least one of -those must be installed. - -To build the manual pages, Developer's Guide and User's Guide, Asciidoctor, Xsltproc, and DocBook must be installed. - -Perl is required to generate some code and run some code analysis checks. - -Some features of Wireshark require additional libraries to be installed. -The processes for doing so on various UN*X families is shown here. - -There are shell scripts in the `tools` directory to install the packages -and libraries required to build Wireshark. Usage is available with the -`--help` option. `root` permission is required to run the scripts. -The available scripts and their options for a given family of UN*Xes are -shown in the section for that family. - -[discrete] -==== Alpine Linux - -The setup script is `tools/alpine-setup.sh`; its options are: - -* `--install-optional` install optional software as well -* `--install-all` install everything -* `[other]` other options are passed as-is to apk - -[discrete] -==== Arch Linux and pacman-based systems - -The setup script is `tools/arch-setup.sh`; its options are: - -* `--install-optional` install optional software as well -* `--install-test-deps` install packages required to run all tests -* `--install-all` install everything -* `[other]` other options are passed as-is to pacman - -[discrete] -==== BSD systems such as FreeBSD, NetBSD, OpenBSD, and DragonFly BSD - -The setup script is `tools/bsd-setup.sh`; its options are: - -* `--install-optional` install optional software as well -* `[other]` other options are passed as-is to pkg manager - -[discrete] -==== Debian, and Linux distributions based on Debian, such as Ubuntu - -The setup script is `tools/debian-setup.sh`; its options are: - -* `--install-optional` install optional software as well -* `--install-deb-deps` install packages required to build the .deb file -* `--install-test-deps` install packages required to run all tests -* `--install-qt5-deps` force installation of packages required to use Qt5 -* `--install-qt6-deps` force installation of packages required to use Qt6 -* `--install-all` install everything -* `[other]` other options are passed as-is to apt - -[discrete] -==== RPM-based Linux distributions such as Red Hat, Centos, Fedora, and openSUSE + - -The setup script is `tools/rpm-setup.sh`; its options are: - -* `--install-optional` install optional software as well -* `--install-rpm-deps` install packages required to build the .rpm file -* `--install-qt5-deps` force installation of packages required to use Qt5 -* `--install-qt6-deps` force installation of packages required to use Qt6 -* `--install-all` install everything -* `[other]` other options are passed as-is to the packet manager - -[discrete] -==== macOS - -You must first install Xcode. - -After installing Xcode, the setup script `tools/macos-setup.sh` will -install the rest of the tools and libraries required to build Wireshark, -except for Qt 6, as well as the additional tools required to build the -documentation and the libraries required for all Wireshark features. If -you're using Homebrew, the script `tools/macos-setup-brew.sh` will -install the same tools and libraries from Homebrew. - -If you will be building Wireshark with Qt 6, which is the default for -Wireshark 4.0 and later, you will also have to install Qt; the -`tools/macos-setup.sh` script will not install Qt 6. To install -Qt, go to the https://www.qt.io/download-qt-installer-oss[Download Qt -for open source use page], select “macOS” if it's not already selected, -and then select “Qt online installer for macOS“. This will download a -.dmg for the installer; launch the installer. It will require that you -log into your Qt account; if you don't have an account, select “Sign up“ -to create one. The next page will require you to accept the LGPL (Lesser -GNU Public License); do so. Continue to the “Installation Folder“ page -of the installer screen, and select the “Custom installation“ option. -On the “Select Components“ screen of the installer, select, for the -desired Qt version, the “macOS” component. For example, at the time of -this writing the Qt {qt6-lts-version} “macOS” component is used to build -the official packages. The “Qt Debug Information Files” component -contains dSYM files which can be used for debugging. You can deselect -all of the other the components such as “Qt Charts” or “Android xxxx” -as they aren’t required. - -Qt 6 needs the "Qt 5 Compatibility Module" to be installed as well. Additionally, the module -"Qt Multimedia" may be installed, to support advanced controls for playing back streams in the -RTP Player dialog. - -[#ChSetupUNIXBuild] - -==== Building - -Before building: - -On macOS, you will need to set the Qt installation directory in the -environment: - -[subs="attributes+"] ----- -WIRESHARK_QT6_PREFIX_PATH=~/Qt/{qt6-lts-version}/macos -export WIRESHARK_QT6_PREFIX_PATH ----- - -If you want to append a custom string to the package version, run the -command - -[subs="attributes+"] ----- -WIRESHARK_VERSION_EXTRA=-YourExtraVersionInfo -export WIRESHARK_VERSION_EXTRA ----- - -The recommended (and fastest) way to build Wireshark is with CMake -and Ninja. Building with make took nearly 2x time as Ninja in one -experiment. - -CMake builds are best done in a separate build directory, such as a -`build` subdirectory of the top-level source directory. + -If that directory is a subdirectory of the top-level source directory, -to generate the build files, change to the build directory and enter the -following command: - ----- -cmake .. ----- - -to use make as the build tool or - ----- -cmake -G Ninja .. ----- - -to use Ninja as the build tool. - -If you created the build directory in the -same directory that contains the top-level Wireshark source directory, -to generate the build files, change to the build directory and enter the -following command: - ----- -cmake ../{source directory} ----- - -to use make as the build tool or - ----- -cmake -G Ninja ../{source directory} ----- - -to use Ninja as the build tool. + -`{source directory}` is the name of the -top-level Wireshark source directory. - -If you need to build with a non-standard configuration, you can run - -[source,sh] ----- -cmake -LH ../{source directory} ----- - -to see what options you have. - -You can then run Ninja or make to build Wireshark. - ----- -ninja -# or -make ----- - -Once you have build Wireshark with `ninja` or `make` above, you should be able to test it -by entering `run/wireshark`. - -==== Optional: Install - -Install Wireshark in its final destination: - ----- -make install ----- - -Once you have installed Wireshark with `make install` above, you should be able -to run it by entering `wireshark`. - -==== Optional: Create User’s and Developer’s Guide - -To build the Wireshark User's Guide and the Wireshark Developer's Guide, -build the `all_guides` target, e.g. `make all_guides` or `ninja -all_guides`. Detailed information to build these guides can be found in -the file _docbook/README.adoc_ in the Wireshark sources. - -==== Optional: Create an installable or source code package - -You can create packages using the following build targets and commands: - -Source code tarball:: - Build the `dist` target. - -deb (Debian) package:: - Create a symlink in the top-level source directory to _packaging/debian_, then run `dpkg-buildpackage`. - -RPM package:: - Build the `wireshark_rpm` target. - -https://appimage.org[AppImage] package:: - Build the `wireshark_appimage` target. - -macOS .dmg package containing an application bundle:: - Build the `wireshark_dmg` or `logray_dmg` targets. - -Installable packages typically require building Wireshark first. - -==== Troubleshooting during the build and install on Unix - -A number of errors can occur during the build and installation process. -Some hints on solving these are provided here. - -If the `cmake` stage fails you will need to find out why. You can check the -file `CMakeOutput.log` and `CMakeError.log` in the build directory to find -out what failed. The last few lines of this file should help in determining the -problem. - -The standard problems are that you do not have a required development package on -your system or that the development package isn’t new enough. Note that -installing a library package isn’t enough. You need to install its development -package as well. - -If you cannot determine what the problems are, send an email to the -_wireshark-dev_ mailing list explaining your problem. Include the output from -`cmake` and anything else you think is relevant such as a trace of the -`make` stage. - - -// Retain ChSetupWin32 for backward compatibility -[#ChSetupWindows] -=== Windows: Using Microsoft Visual Studio[[ChSetupWin32]] - -A quick setup guide for Windows development with recommended configurations. - -[WARNING] -==== -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: - -. Not using the correct (x64 or x86) version of the Visual Studio command prompt. - -. Not using a supported version of Windows. Please check - https://support.microsoft.com/en-gb/help/13853/windows-lifecycle-fact-sheet[here] - that your installed version is supported and updated. - -==== - -[#ChSetupChocolatey] - -==== Recommended: Install Chocolatey - -https://chocolatey.org/[Chocolatey] is a native package manager for -Windows. There are https://chocolatey.org/packages[packages] for most of -the software listed below. Along with traditional Windows packages it -supports the Python Package Index. - -Chocolatey tends to install packages into its own path (%ChocolateyInstall%), although packages are free to use their own preferences. -You can install Chocolatey packages using the command `choco install` (or its shorthand, `cinst`), e.g. - -[source,cmd] ----- -rem Flex is required. -choco install -y winflexbison3 -rem Git, CMake, Python, etc are also required, but can be installed -rem via their respective installation packages. -choco install -y git cmake python3 ----- - - -[#ChSetupMSVC] - -==== Install Microsoft Visual Studio - -Download and install https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=17[“Microsoft Visual Studio 2022 Community Edition”]. -If you prefer you can instead download and install https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community&rel=16[“Microsoft Visual Studio 2019 Community Edition”]. -The examples below are for Visual Studio 2022 but can be adapted for Visual Studio 2019. -These are small utilities that download all the other required parts (which are quite large). - -Check the checkbox for “Desktop development with {cpp}” and then uncheck -all the optional components other than - -* “MSVC ... VS 2022 {cpp}” item with the “... build tools (Latest)” -* “Windows 11 SDK” -* “{cpp} CMake tools for Windows" - -(unless you want to use them for purposes other than Wireshark). - -You can alternatively use Chocolatey to install Visual Studio, using the Visual Studio Community and Native Desktop workload packages. -Note that this includes Visual Studio’s CMake component. - ----- -choco install -y visualstudio2022community visualstudio2022-workload-nativedesktop ----- - -// winget has basic VS 2022 and 2019 packages, but no native desktop workload packages. -// https://github.com/microsoft/winget-pkgs/tree/master/manifests/m/Microsoft/VisualStudio - -You can use other Microsoft C compiler variants, but VS2022 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 <<ChToolsMSChain>>. - -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 -<<ChToolsGNUChain>>. This may change in future as releases -of Visual Studio add more cross-platform support. - -// XXX - mention the compiler and PSDK web installers - -// which significantly reduce download size - and find out the -// required components - -Why is this recommended? -While this is a huge download, the Community Editions of Visual Studio are free (as in beer) and include the Visual Studio integrated debugger. -Visual Studio 2022 is also used to create official Wireshark builds, so it will likely have fewer development-related problems. - -[#ChSetupQt] - -==== Install Qt - -The main Wireshark application uses the Qt windowing toolkit. To install -Qt, go to the https://www.qt.io/download[“Download Qt” page], select -"Download open source", then "Download Qt Online Installer", and download -"*Qt Online Installer for Windows*". When executing it, sign up or log in, -and use Next button to proceed. When asked, select "*Custom installation*". - -In the "Select Components" page, select your desired Qt version. We recommend -the latest LTS version, and the stable Windows installers currently ship with Qt {qt6-lts-version}. -Select the following components: - -* MSVC 2019 64-bit -* Qt 5 Compatibility Module -* Qt Debug Information Files (contains PDB files which can be used for debugging) -* Under "Additional Libraries" select "Qt Multimedia" to support advanced -controls for playing back streams in the RTP Player dialog -* You can deselect all of the other the components -such as “Qt Charts” or “Android xxxx” as they aren’t required. - -The CMake variable CMAKE_PREFIX_PATH (see `https://doc.qt.io/qt-6/cmake-get-started.html`) should be set as appropriate for your environment and should point to the Qt installation directory, e.g. _C:\Qt{backslash}{qt6-lts-version}\msvc2019_64_ -Alternatively you can also use the environment variable WIRESHARK_QT6_PREFIX_PATH. - -Qt 6 is the default option for building Wireshark, but Wireshark has support for Qt 5.12 and later. To enable Wireshark to build with Qt 5 pass `-DUSE_qt6=OFF` -to cmake. - -[#ChSetupPython] - -==== Install Python - -Get a Python 3 installer from https://python.org/download/[] and install Python. -Its installation location varies depending on the options selected in the installer and on the version of Python that you are installing. -At the time of this writing the latest version of Python is 3.10, and common installation directories are -_C:\Users{backslash}**username**\AppData\Local\Programs\Python\Python310_, _C:\Program Files\Python310_, and _C:\Python310_. - -Alternatively you can install Python using Chocolatey: - ----- -choco install -y python3 ----- - -// Not sure how to document Chocolatey's installation location other than "could be anywhere, LOL" -// https://community.chocolatey.org/packages/python3/#discussion -Chocolatey will likely install Python in one of the locations above, or possibly in _C:\Tools\Python3_. - -// winget has Python 3 packages. -// https://github.com/microsoft/winget-pkgs/tree/master/manifests/p/Python/Python/3 - -[#ChSetupGit] - -==== Install Git - -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, as described in -<<ChSrcObtain>>. 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 https://chocolatey.org/[Chocolatey]. -Note that many of the GUI interfaces depend on the command line version. - -If installing the Windows version of git select the -_Use Git from the Windows Command Prompt_ (in chocolatey the _/GitOnlyOnPath_ -option). Do *not* select the _Use Git and optional Unix tools from the Windows Command Prompt_ -option (in chocolatey the _/GitAndUnixToolsOnPath_ option). - -===== The Official Windows Installer - -The official command-line installer is available at https://git-scm.com/download/win. - -===== Git Extensions - -Git Extensions is a native Windows graphical Git client for -Windows. You can download the installer from -https://github.com/gitextensions/gitextensions/releases/latest. - -===== TortoiseGit - -TortoiseGit is a native Windows graphical Git -similar to TortoiseSVN. You can download the installer from -https://tortoisegit.org/download/. - -===== Command Line client via Chocolatey - -The command line client can be installed (and updated) using Chocolatey: ----- -choco install -y git ----- - -// winget has git. -// https://github.com/microsoft/winget-pkgs/tree/master/manifests/g/Git/Git - -===== Others - -A list of other GUI interfaces for Git can be found at -https://git-scm.com/downloads/guis - - -[#ChSetupCMake] - -==== Install CMake - -While CMake is required to build Wireshark, it might have been installed as a component of either Visual Studio or Qt. -If that’s the case you can skip this step. -If you do want or need to install CMake, you can get it from https://cmake.org/download/[]. -Installing CMake into the default location is recommended. -Ensure the directory containing cmake.exe is added to your path. - -Alternatively you can install it using Chocolatey: - ----- -choco install -y cmake ----- - -// winget has CMake. -// https://github.com/microsoft/winget-pkgs/tree/master/manifests/k/Kitware/CMake - -Chocolatey ensures cmake.exe is on your path. - -[#ChSetupAsciidoctor] - -==== Install Asciidoctor, Xsltproc, And DocBook - -https://asciidoctor.org/[Asciidoctor] can be run directly as a Ruby script or via a Java wrapper (AsciidoctorJ). -The JavaScript flavor (Asciidoctor.js) isn’t yet supported. -It is used in conjunction with Xsltproc and DocBook to generate the documentation you're reading and the User’s Guide. - -You can install AsciidoctorJ, Xsltproc, and DocBook using Chocolatey. -AsciidoctorJ requires a Java runtime and there are https://en.wikipedia.org/wiki/List_of_Java_virtual_machines[many to choose from]. -Chocolatey doesn't support alternative package dependencies at the present time, including dependencies on Java. -As a result, installing the asciidoctorj package won't automatically install a Java runtime -- you must install one separately. - ----- -choco install -y <your favorite Java runtime> -choco install -y asciidoctorj xsltproc docbook-bundle ----- - -Chocolatey ensures that asciidoctorj.exe and xsltproc.exe is on your -path and that xsltproc uses the DocBook catalog. - -// winget has no Asciidoctor, xsltproc, or DocBook packages. - -==== Install winflexbison - -Get the winFlexBison installer from -https://sourceforge.net/projects/winflexbison/ -and install into the default location. -Ensure the directory containing win_flex.exe is on your path. - -Alternatively you can install Winflexbison using Chocolatey: - ----- -choco install -y winflexbison3 ----- - -Chocolatey ensures win_flex.exe is on your path. - -// winget has no bison package. - -==== Optional: Install Perl - -If needed you can get a Perl installer from -http://strawberryperl.com/ -or -https://www.activestate.com/ -and install Perl into the default location. - -Alternatively you can install Perl using Chocolatey: - ----- -choco install -y strawberryperl -# ...or... -choco install -y activeperl ----- - -// winget has StrawberryPerl. -// https://github.com/microsoft/winget-pkgs/tree/master/manifests/s/StrawberryPerl/StrawberryPerl - -==== Install and Prepare Sources - -[TIP] -.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://gitlab.com/wireshark/wireshark.git ----- - -Using Git extensions: - -. Open the Git Extensions application. By default Git Extensions - will show a validation checklist at startup. If anything needs to - be fixed do so now. You can bring up the checklist at any time - via menu:Tools[Settings]. - -. In the main screen select _Clone repository_. Fill in the following: -+ -Repository to clone: *`https://gitlab.com/wireshark/wireshark.git`* -+ -Destination: Your top-level development directory, e.g. _C:\Development_. -+ -Subdirectory to create: Anything you’d like. Usually _wireshark_. -+ -[TIP] -.Check your paths -==== -Make sure your repository path doesn't contain spaces. -==== - -. Click the btn:[Clone] button. Git Extensions should start cloning the - Wireshark repository. - -[#ChSetupPrepareCommandCom] - -==== Open a Visual Studio Command Prompt - -From the Start Menu (or Start Screen), navigate to the “Visual Studio 2022” folder and choose the https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=msvc-170#developer_command_prompt_shortcuts[Command Prompt] appropriate for the build you wish to make, e.g. “x64 Native Tools Command Prompt for VS 2022” for a 64-bit version. -Depending on your version of Windows the Command Prompt list might be directly under “Visual Studio 2022” or you might have to dig for it under multiple folders, e.g. menu:Visual Studio 2022[Visual Studio Tools,Windows Desktop Command Prompts]. - -You can set up a build environment in your own command prompt by running the appropriate `vcvars__ARCHITECTURE__.bat` command. -See https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=msvc-170#use-the-developer-tools-in-an-existing-command-window[Use the Microsoft C++ toolset from the command line] for details. - -[TIP] -.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: - -[subs="attributes+"] ----- -rem Let CMake determine the library download directory name under -rem WIRESHARK_BASE_DIR or set it explicitly by using WIRESHARK_LIB_DIR. -rem Set *one* of these. -set WIRESHARK_BASE_DIR=C:\Development -rem set WIRESHARK_LIB_DIR=c:\wireshark-x64-libs -rem Set the Qt installation directory -set WIRESHARK_QT6_PREFIX_PATH=C:\Qt{backslash}{qt6-lts-version}\msvc2019_64 -rem Append a custom string to the package version. Optional. -set WIRESHARK_VERSION_EXTRA=-YourExtraVersionInfo ----- - -Setting these variables could be added to a batch file to be run after you open -the Visual Studio Tools Command Prompt. - -[TIP] -.Use of Qt’s LTS branch -==== -It is generally recommended to use a LTS ("long term support") version for Qt. The current LTS version for Qt 6 is -{qt6-lts-version}. -==== - --- - -. Create and change to the correct build directory. -CMake is best used in an out-of-tree build configuration where the build is done in a separate directory from the source tree, leaving the source tree in a pristine state. -64 and 32 bit builds require a separate build directory. -Create (if required) and change to the appropriate build directory. -+ --- -// XXX Our CI builds are in-tree in <src dir>/build. ----- -mkdir C:\Development\wsbuild64 -cd C:\Development\wsbuild64 ----- -to create and jump into the build directory. - -The build directory can be deleted at any time and the build files regenerated as detailed in <<ChWindowsGenerate>>. --- - -[#ChWindowsGenerate] - -==== Generate the build files - -CMake is used to process the CMakeLists.txt files in the source tree and produce build files appropriate -for your system. - -You can generate Visual Studio solution files to build either from within Visual Studio, or from the command -line with MSBuild. CMake can also generate other build types but they aren't supported. - -The initial generation step is only required the first time a build directory is created. Subsequent -builds will regenerate the build files as required. - -If you've closed the Visual Studio Command Prompt <<ChSetupPrepareCommandCom,prepare>> it again. - -To generate the build files enter the following at the Visual Studio command prompt: ----- -cmake -G "Visual Studio 17 2022" -A x64 ..\wireshark ----- - -Adjusting the path to the Wireshark source tree as required. -To use a different generator modify the `-G` parameter. -`cmake -G` lists all the CMake supported generators, but only Visual Studio is supported for Wireshark builds. -32-bit builds are no longer supported. - -The CMake generation process will download the required 3rd party libraries (apart from Qt) -as required, then test each library for usability before generating the build files. - -At the end of the CMake generation process the following should be displayed: ----- --- Configuring done --- Generating done --- Build files have been written to: C:/Development/wsbuild64 ----- - -If you get any other output, there is an issue in your environment that must be rectified before building. -Check the parameters passed to CMake, especially the `-G` option and the path to the Wireshark sources and -the environment variables `WIRESHARK_BASE_DIR` and `CMAKE_PREFIX_PATH`. - -[#ChWindowsBuild] - -==== Build Wireshark - -Now it’s time to build Wireshark! - -. If you've closed the Visual Studio Command Prompt <<ChSetupPrepareCommandCom,prepare>> it again. - -. Run -+ --- ----- -msbuild /m /p:Configuration=RelWithDebInfo Wireshark.sln ----- -to build Wireshark. --- - -. Wait for Wireshark to compile. This will take a while, and there will be a lot of text output in the command prompt window - -. Run _C:\Development\wsbuild64\run\RelWithDebInfo\Wireshark.exe_ and make sure it starts. - -. Open menu:Help[About]. If it shows your "private" program -version, e.g.: Version {wireshark-version}-myprotocol123 -congratulations! You have compiled your own version of Wireshark! - -You may also open the Wireshark solution file (_Wireshark.sln_) in the Visual Studio IDE and build there. - -TIP: If compilation fails for suspicious reasons after you changed some source -files try to clean the build files by running `msbuild /m /p:Configuration=RelWithDebInfo Wireshark.sln /t:Clean` -and then building the solution again. - -The build files produced by CMake will regenerate themselves if required by changes in the source tree. - -==== Debug Environment Setup - -You can debug using the Visual Studio Debugger or WinDbg. See the section -on using the <<ChToolsDebugger, Debugger Tools>>. - -==== Optional: Create User’s and Developer’s Guide - -To build the Wireshark User's Guide and the Wireshark Developer's Guide, -build the `all_guides` target, e.g. `msbuild all_guides.vcxproj`. -Detailed information to build these guides can be found in the file -_docbook\README.adoc_ in the Wireshark sources. - -==== Optional: Create a Wireshark Installer - -Note: You should have successfully built Wireshark -before doing the following. - -If you want to build your own -_Wireshark-{wireshark-version}-myprotocol123-x64.exe_, you'll need -NSIS. You can download it from http://nsis.sourceforge.net[]. - -Note that the 32-bit version of NSIS will work for both 64-bit and 32-bit versions of Wireshark. -NSIS version 3 is required. - -If you've closed the Visual Studio Command Prompt <<ChSetupPrepareCommandCom,prepare>> it again. Run - ----- -msbuild /m /p:Configuration=RelWithDebInfo wireshark_nsis_prep.vcxproj -msbuild /m /p:Configuration=RelWithDebInfo wireshark_nsis.vcxproj ----- - -to build a Wireshark installer. -If you sign your executables you should do so between the “wireshark_nsis_prep” and “wireshark_nsis” steps. -To sign your installer you should place the signing batch script on the path. It must be named "sign-wireshark.bat". -It should be autodetected by CMake, to always require signing set the -DENABLE_SIGNED_NSIS=On CMake option. - -Run - ----- -packaging\nsis\wireshark-{wireshark-version}-myprotocol123-x64.exe ----- - -to test your new installer. -It’s a good idea to test on a different machine than the developer machine. - -[#ChSetupMSYS2] - -=== Windows: Using MinGW-w64 with MSYS2 - -MSYS2 comes with different environments/subsystems and the first thing you -have to decide is which one to use. The differences among the environments -are mainly environment variables, default compilers/linkers, architecture, -system libraries used etc. If you are unsure, go with UCRT64. - -==== Building from source - -. Open the shell for the selected 64-bit environment. - -. Download the Wireshark source code using Git, if you haven't done so already, - and cd into that directory. - -. Install needed dependencies: - - tools/msys2-setup.sh --install-all - -. Build using CMake + Ninja: - - mkdir build && cd build - # Ninja generator is the default - cmake -DENABLE_CCACHE=On -DFETCH_lua=Yes .. - ninja - ninja test # optional, to run the test suite - ninja install # optional, install to the MSYS2 shell path - -The application should be launched using the same shell. - -==== Building an .exe installer - -. Follow the instructions above to compile Wireshark from source. - -. Build the NSIS installer target. - - ninja wireshark_nsis_prep - ninja wireshark_nsis - -If successful the installer can be found in `$CMAKE_BINARY_DIR/packaging/nsis`. - -Alternatively you can also use the PKGBUILD included in the Wireshark -source distribution to compile Wireshark into a binary package that can be -https://www.msys2.org/wiki/Creating-Packages/[installed using pacman]. - -==== Comparison with MSVC toolchain - -The official Wireshark Windows installer is compiled using Microsoft Visual -Studio (MSVC). Currently the MSYS2 build has the following limitations compared to -the build using MSVC: - -* Lua does not have https://github.com/Lekensteyn/lua-unicode[custom UTF-8 patches]. - -* The Event Tracing for Windows (ETW) extcap cannot be compiled using MinGW-w64. - -* Enhanced Kerberos dissection with decryption is not available. - -* AirPcap is not supported. - -[#ChSetupCross] - -=== Windows: Cross-compilation using Linux - -It is possible to compile Wireshark for Microsoft Windows using Linux and MinGW. -This way developers can deploy Wireshark on Windows systems without requiring -a Windows host machine. Building for Windows using a Linux host is also -easier for devs already familiar with Linux, the build itself is faster and it -uses a very mature C/C++ compiler (GCC) and debugger (GDB). - -==== Using Fedora Linux - -https://fedoraproject.org/[Fedora Linux] provides the best out-of-the-box -support for MinGW cross-compilation. Fedora is what the project uses to test -the build and it's what we recommend. While any other reasonably modern Linux -distribution can be used, that will make the process more time consuming and -involve some trial and error to setup. - -The build instructions on Fedora follow the familiar recipe for building Wireshark -using Linux. - -===== Building from source - -. Install needed dependencies: - - tools/mingw-rpm-setup.sh --install-all - -. Build using CMake + Ninja: - - mkdir build && cd build - mingw64-cmake -G Ninja -DENABLE_CCACHE=Yes -DFETCH_lua=Yes .. - ninja -+ -Note that currently it is not possible to run the test-suite when cross-compiling. - -. Build the NSIS installer - - ninja wireshark_nsis_prep - ninja wireshark_nsis - -If successful the installer can be found in `$CMAKE_BINARY_DIR/packaging/nsis`. - -===== Notes and comparison with MSVC builds - -* Only the MSVCRT C library for Microsoft Windows can be used. Support for the - UCRT (Universal C Runtime) library on Fedora Linux is in the initial stages of - deployment and not ready for prime-time (at the time of this writing). - -* Some optional dependencies are missing from Fedora repositories and must be - compiled from source if desired. An up-to-date complete list can be found in - the bug tracker (https://gitlab.com/wireshark/wireshark/-/issues/19108[issue 19108]). - -* Lua does not have https://github.com/Lekensteyn/lua-unicode[custom UTF-8 patches]. - -* The Event Tracing for Windows (ETW) extcap cannot be compiled using MinGW-w64. - -* Enhanced Kerberos dissection with decryption is not available. - -* AirPcap is not supported. - -==== Using Arch Linux - -https://archlinux.org/[Arch Linux] has good support for MinGW using packages -from the https://aur.archlinux.org/[AUR]. Note that the mingw-w64 AUR packages -sometimes break. If that happens you may be required to fix it or skip the -package until it is fixed by the maintainer, if it's an optional dependency. -You may also want to consider using an -https://wiki.archlinux.org/title/unofficial_user_repositories[unofficial user repository] -(such as the https://martchus.no-ip.biz/repo/arch/ownstuff/[ownstuff] repository) -to provide pre-compiled packages. This will greatly simplify the initial setup -and subsequent upgrades. - -CAUTION: AUR packages and unofficial user repositories are user-produced -content. These packages are completely unofficial and have not been thoroughly -vetted. It is your decision whether to trust their maintainers and you take -full responsibility for choosing to use them. - -You will need to install an https://wiki.archlinux.org/title/AUR_helpers[AUR helper]. -This guide assumes `paru` is being used. - -. Install required dependencies from official repositories: - - pacman -S mingw-w64 nsis lemon qt6-tools ccache - -. Install required dependencies from the AUR: - - paru -S mingw-w64-cmake - paru -S mingw-w64-glib2 - paru -S mingw-w64-libgcrypt - paru -S mingw-w64-c-ares - paru -S mingw-w64-speexdsp - paru -S mingw-w64-libpcap - -. Install Qt6: - - paru -S mingw-w64-qt6-base mingw-w64-qt6-5compat mingw-w64-qt6-multimedia - -. Install optional dependencies: - - paru -S mingw-w64-gnutls - paru -S mingw-w64-lz4 - paru -S mingw-w64-snappy - paru -S mingw-w64-opus - paru -S mingw-w64-opencore-amr - paru -S mingw-w64-libxml2 - paru -S mingw-w64-libnghttp2 - paru -S mingw-w64-libssh - paru -S mingw-w64-minizip -+ -Search the AUR for other dependencies not listed above. - -. Build Wireshark using CMake + Ninja. From the directory containing the - Wireshark source tree run: - - mkdir build && cd build - x86_64-w64-mingw32-cmake -G Ninja -DENABLE_CCACHE=Yes -DFETCH_lua=Yes \ - -DMINGW_SYSROOT=/usr/x86_64-w64-mingw32 .. - ninja -+ -This will automatically download and build Lua as a static library. -+ -To reconfigure the CMake build you may to do it explicitly by running -`x86_64-w64-mingw32-cmake .` in the build directory, -instead of letting `ninja` do it for you automatically. - -. Build the NSIS installer - - ninja wireshark_nsis_prep - ninja wireshark_nsis - -If everything goes well the installer can be found in `$CMAKE_BINARY_DIR/packaging/nsis`. - -The same notes as the build using Fedora apply. |