.. SPDX-License-Identifier: BSD-3-Clause
Copyright(c) 2010-2025 Intel Corporation.
.. _building_from_sources:
Building and Installing DPDK from Sources
=========================================
This chapter provides a comprehensive guide for building DPDK from sources.
It covers the necessary steps, prerequisites, and considerations for different architectures and compilers.
Required Tools
--------------
To build DPDK, you'll need the following tools:
- A C compiler like ``gcc`` (version 5+) or ``clang`` (version 3.6+)
- ``pkg-config`` or ``pkgconf``
- Python 3.6 or later
- ``meson`` (version 0.57.0) and ``ninja``
- ``pyelftools`` (version 0.22+)
Platform-Specific Tool Installation
-----------------------------------
Linux
^^^^^
Alpine
""""""
.. code-block:: bash
sudo apk add alpine-sdk bsd-compat-headers gcc pkg-config python3 meson ninja pyelftools numactl-dev
Debian, Ubuntu, and derivatives
"""""""""""""""""""""""""""""""
.. code-block:: bash
sudo apt install build-essential gcc pkg-config python3 meson ninja pyelftools libnuma-dev
Fedora and RedHat Enterprise Linux (RHEL)
"""""""""""""""""""""""""""""""""""""""""
.. code-block:: bash
sudo dnf groupinstall "Development Tools"
sudo dnf install gcc pkg-config python3 meson ninja python3-pyelftools numactl-devel
openSUSE
""""""""
.. code-block:: bash
sudo zypper install -t pattern devel_basis
sudo zypper install gcc pkg-config python3 meson ninja python3-pyelftools libnuma-devel
FreeBSD
^^^^^^^
.. code-block:: bash
pkg install pkgconf python3 meson ninja pyelftools
.. note::
If you're using FreeBSD, make sure kernel sources are included during the FreeBSD installation.
Windows System Requirements
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Building the DPDK and its applications on Windows requires one of the following
environments:
- The Clang-LLVM C compiler and Microsoft MSVC linker.
- The MinGW-w64 toolchain (either native or cross).
The Meson Build system is used to prepare the sources for compilation with the Ninja backend.
.. _clang_llvm:
Option 1: Clang-LLVM C Compiler and Microsoft MSVC Linker
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
1. Install the Compiler: Download and install the Clang compiler from the
`LLVM website `_.
2. Install the Linker: Download and install the Build Tools for Visual Studio from the
`Microsoft website `_.
When installing build tools, select the “Visual C++ build tools” option and make sure
the Windows SDK is selected.
.. _mingw_w64_toolchain:
Option 2: MinGW-w64 Toolchain
""""""""""""""""""""""""""""""
1. On Linux (for cross-compilation): Install MinGW-w64 via a package manager.
Version 4.0.4 for Ubuntu 16.04 cannot be used due to a MinGW-w64 bug.
2. On Windows: Obtain the latest version installer from the
`MinGW-w64 repository `_.
Any thread model (POSIX or Win32) can be chosen, DPDK does not rely on it.
Install to a folder without spaces in its name, like ``C:\MinGW``.
This path is assumed for the rest of this guide.
Install the Build System
^^^^^^^^^^^^^^^^^^^^^^^^
Download and install the build system from the
`Meson website `_.
A good option to choose is the MSI installer for both meson and ninja together.
Required version is Meson 0.57.x (baseline).
Getting the DPDK Source
-----------------------
Linux and FreeBSD
^^^^^^^^^^^^^^^^^
.. code-block:: bash
wget https://fast.dpdk.org/rel/dpdk-20.11.tar.xz
tar -xJf dpdk-20.11.tar.xz
cd dpdk-20.11
Windows
^^^^^^^
Download the DPDK source code from `DPDK's official website `_ or clone the repository using a Git client. Extract the downloaded archive, if applicable, and navigate to the DPDK directory.
Navigate to the directory where the DPDK source code is located:
.. code-block:: bash
cd C:\path\to\dpdk-20.11
Building DPDK
-------------
.. note::
In all examples below, "build" is used as the name of the build directory. It is not part of the command itself.
Linux and FreeBSD
^^^^^^^^^^^^^^^^^
.. code-block:: bash
meson setup build
meson compile -C build
Windows
^^^^^^^
**Option 1: Using Clang-LLVM**
.. code-block:: bash
set CC=clang
meson setup -Dexamples=helloworld build
meson compile -C build
**Option 2: Using MinGW-w64**
.. code-block:: bash
set PATH=C:\MinGW\mingw64\bin;%PATH%
meson setup -Dexamples=helloworld build
meson compile -C build
.. note::
For detailed information on Meson build configuration options specific to DPDK, see :ref:`DPDK Meson Build Configuration Options `.
Cross-Compilation Instructions for Different Architectures
----------------------------------------------------------
For instructions on building DPDK for ARM64, LoongArch, and RISC-V, refer to :ref:`cross_compile_dpdk`.