Install Guide
Install Guide
Installation Guide
Version 6.2.0
Copyright © 1992-2021, András Varga and OpenSim Ltd.
Build: 250714-83e173e93a
CONTENTS
1 Quick Installation 1
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Supported Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Recommended Installation Method (opp_env) . . . . . . . . . . . . . . . . . . . . . 1
1.4 Installing OMNeT++ with the System Package Manager . . . . . . . . . . . . . . . 2
1.5 Manual Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4 macOS 9
4.1 Supported Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.2 Installing the Prerequisite Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.3 Enabling Development Mode in Terminal . . . . . . . . . . . . . . . . . . . . . . . 10
4.4 Debugging Unsigned Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.5 Additional Steps Required on macOS to Use the Debugger . . . . . . . . . . . . . 11
4.6 Downloading and Unpacking OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . 11
4.7 Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.8 Configuring and Building OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.9 Verifying the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.10 Starting the IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.11 Using the IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.12 Reconfiguring the Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.13 Additional Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5 Linux 15
5.1 Supported Linux Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2 Installing the Prerequisite Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.3 Downloading and Unpacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.4 Setting up the Python Virtual Environment . . . . . . . . . . . . . . . . . . . . . . 16
5.5 Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
i
5.6 Configuring and Building OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.7 Verifying the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.8 Starting the IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
5.9 Using the IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.10 Reconfiguring the Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5.11 Additional Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
6 Ubuntu 23
6.1 Supported Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
6.2 Installing the Prerequisite Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 23
7 Fedora 27
7.1 Supported Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
7.2 Installing the Prerequisite Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 27
9 OpenSUSE 31
9.1 Supported Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
9.2 Installing the Prerequisite Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 31
10 Arch Linux 33
10.1 Supported Releases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
10.2 Installing the Prerequisite Packages . . . . . . . . . . . . . . . . . . . . . . . . . . 33
11 Generic Unix 35
11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
11.2 Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
11.3 Determining Package Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
11.4 Downloading and Unpacking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
11.5 Environment Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
11.6 Configuring and Building OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . . . 37
11.7 Verifying the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
11.8 Starting the IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
11.9 Optional Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
12 Build Options 41
12.1 [Link] Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
12.2 Moving the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
12.3 Using Different Compilers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
ii
CHAPTER
ONE
QUICK INSTALLATION
1.1 Introduction
This document describes how to install OMNeT++ on various platforms. One chapter is
dedicated to each operating system.
OMNeT++ (including the Simulation IDE) has been tested and is supported on the following
operating systems:
• Linux x86_64/aarch64 distributions covered in this Installation Guide
• macOS 15 on x86_64/aarch64 architectures
• Windows 11 on x86_64 architecture
Note: Simulations can be run practically on any unix-like environment with a decent and
fairly up-to-date C++ compiler, for example gcc 14.x. Certain OMNeT++ features (Qtenv,
parallel simulation, XML support, etc.) depend on the availability of external libraries (Qt,
MPI, LibXML, etc.)
IDE platforms are restricted because the IDE relies on a native shared library, which we
compile for the above platforms and distribute in binary form for convenience.
1
Installation Guide, Release 6.2.0
To install OMNeT++ using the system package manager, start the [Link] script in the
root directory of the OMNeT++ installation. The script will detect the system package manager
and will guide you through the installation process.
To manually install OMNeT++ and its dependencies, visit the appropriate chapter for your
platform.
TWO
Windows Subsystem for Linux (WSL) supports running a full Linux distribution on a Win-
dows machine. Running OMNeT++ in WSL 2 has several advantages compared to running
OMNeT++ natively on Windows:
Advantages:
• You will probably see significant speedup on certain tasks (like compilation) compared
to the native Windows (MinGW64) toolchain, because the compiler toolchain and the
filesystem (ext4) is much faster in WSL 2 than their Windows equivalents.
• The native MinGW64 toolchain on Windows is basically a mini (Unix-like) system, em-
ulated on top of Windows. Because of the emulation, it may have incompatibilities and
limitations compared to the Linux tools. You will have fewer issues and surprises when
running OMNeT++ on Linux.
Disadvantages:
• You will not be able to link against Windows libraries, however this is seldom needed as
almost all libraries are available in the Linux environment, too.
wsl --install
Or if you have WSL already installed, just upgrade it to the latest version:
[Link] --upgrade
Make sure that it is 2.5.7 or later and continue to install either a Linux distribution from the
Microsoft Store or opp_env in WSL.
Tip: We recommend installing and using the Windows Terminal application, which is avail-
able at [Link]
3
Installation Guide, Release 6.2.0
[Link] -L [Link]
˓→[Link] | wsl --import opp_env -
As a next step, you must install a Linux distribution from the Microsoft Store. We recommend
using Ubuntu from [Link]
Once the installation is done, run the distro and finish the setup process by setting up a user
name and password. At this point, you could install OMNeT++.
At this point, you have a fully functional Linux environment that can run GUI apps. You can
go on and follow the Ubuntu specific installation steps to finally install OMNeT++ on your
system.
THREE
Download the OMNeT++ source code from [Link] Make sure you select the
Windows-specific archive, named omnetpp-6.2.0-windows-x86_64.7z.
The package is self-contained: in addition to OMNeT++ files it includes a C++ compiler, a
command-line build environment, and all libraries and programs required by OMNeT++.
Copy the OMNeT++ archive to the directory where you want to install it. Choose a directory
whose full path does not contain any space; for example, do not put OMNeT++ under
Program Files.
Extract the archive file. To do so, right-click the file in Windows Explorer, and select Extract
All from the menu.
When you look into the new omnetpp-6.2.0 directory, should see directories named doc,
images, include, tools, etc., and files named opp_shell.cmd, configure, Makefile, and
others.
notepad [Link]
$ ./configure
$ make -j16
The build process will create both debug and release binaries.
5
Installation Guide, Release 6.2.0
Note: If you want to install the dependencies manually instead of using the pre-packaged
tools archive, delete all *.7z files from the tools directory before starting opp_shell.cmd
the first time. This will prevent the extraction of the pre-packaged tools. After starting
opp_shell.cmd, you must install the dependencies manually by executing the ./install.
sh script. The script will install all the dependencies and configure, then build OMNeT++.
You should now test all samples and check they run correctly. As an example, the aloha
example is started by entering the following commands:
$ cd samples/aloha
$ ./aloha
By default, the samples will run using the graphical Qtenv environment. You should see GUI
windows and dialogs.
OMNeT++ comes with an Eclipse-based Simulation IDE. You should be able to start the IDE
by typing:
$ omnetpp
We recommend that you start the IDE from the command-line. The build process will also
create a shortcut for you if you want to use the start menu.
Warning: Pinning the OMNeT++ IDE to the taskbar will NOT work.
In general OMNeT++ requires that certain environment variables are set. Always use the the
provided shell window to start the IDE or your simulations.
If you need to recompile the OMNeT++ components with different flags (e.g. different opti-
mization), then change the top-level OMNeT++ directory, edit [Link] accordingly,
then type:
$ ./configure
$ make clean
$ make -j16
If you want to recompile just a single library, then change to the directory of the library (e.g.
cd src/sim) and type:
$ make clean
$ make
By default, libraries are compiled in both debug and release mode. If you want to make
release or debug builds only, use:
$ make MODE=release
or
$ make MODE=debug
By default, shared libraries will be created. If you want to build static libraries, set
SHARED_LIBS=no in [Link] and re-configure your project.
Note: The built libraries and programs are immediately copied to the lib/ and bin/ subdirs.
OMNeT++ has been tested with both the clang compiler from the MinGW-w64 package.
Microsoft Visual C++ is not supported in the Academic Edition.
3.9.1 MPI
$ ./configure
$ make cleanall
$ make
Note: In general, if you would like to run parallel simulations, we recommend that you use
Linux, macOS, or another unix-like platform.
3.9.2 Akaroa
Akaroa 2.7.9, which is the latest version at the time of writing, does not support Windows.
You may try to port it using the porting guide from the Akaroa distribution.
FOUR
MACOS
Install the command line developer tools for macOS (compiler, debugger, etc.)
$ xcode-select --install
Installing additional packages will enable more functionality in OMNeT++; see the Additional
packages section at the end of this chapter.
The [Link] script relies on Homebrew ([Link] for installing prerequisite pack-
ages on all modern macOS systems (both Intel and Apple-Silicon).
If you don’t have Homebrew installed, follow the instructions on its website. Once Homebrew
is ready, ensure its environment is set up correctly in your shell. Typically, this involves
adding a line to your shell profile (e.g., .zprofile or .bash_profile):
Restart your terminal or source your profile script for the changes to take effect.
Install the core development tools and libraries using Homebrew:
$ brew install bison ccache flex perl python@3 make pkg-config doxygen
˓→graphviz
Next, install packages for the graphical environment (Qtenv and IDE). If you do not need
GUI support, you can skip this step and later configure OMNeT++ with WITH_QTENV=no and
WITH_OSG=no.
For 3D visualization support in Qtenv, install the OpenSceneGraph package. If you do not
need 3D support, you can skip this step and later configure OMNeT++ with WITH_OSG=no.
9
Installation Guide, Release 6.2.0
After installing packages with Homebrew, set up a Python virtual environment for OMNeT++.
In the root directory of your OMNeT++ download:
Then, install the required Python packages into the virtual environment:
Note: Make sure you are using python3 from Homebrew (check with which python3). The
system Python provided by macOS should generally not be used for development with OM-
NeT++. If you skip the GUI or 3D packages, remember to disable the corresponding features
(WITH_QTENV=no, WITH_OSG=no) in [Link] or during the ./configure step.
MacOS has a strict default security policy that prevents the execution of unsigned code. This
behavior often interferes with the development process so you must explicitly allow running
unsigned code from a Terminal. On the System Preferences / Security and Privacy / Privacy
tab, select Development Tools on the left side, unlock the panel with the lock icon on the
bottom left and select the Terminal app on the right side to override the default security
policy for the Terminal app.
10 Chapter 4. macOS
Installation Guide, Release 6.2.0
Note: If you do not see the Terminal item in the Development Tools section, you should exe-
cute spctl developer-mode enable-terminal in the terminal and then restart System Preferences
applet.
Even if you have enabled development mode in the terminal, missing code signatures will
still cause problems during debugging, because the debugged process is started by the IDE,
not the terminal. To be able to debug, you must disable code signature checking globally by
typing:
After issuing the above command go to System Preferences / Security and Privacy / General
and select Any at the bottom of the dialog. After restarting your terminal application, you will
be able to debug your unsigned simulation models.
The Command Line Developer Tools package contains the lldb debugger. If you are upgrad-
ing from an earlier version of OMNeT++, be sure to delete and recreate all Launch Configu-
rations in the IDE. This is required because older Launch Configurations were using gdb as
the debugger, but the new IDE uses lldb-dap as the debugger executable.
On the first debug session the OS may prompt you to allow debugging with the lldb exe-
cutable.
In general OMNeT++ requires that certain environment variables are set and the omnetpp-6.
2.0/bin directory is in the PATH. Source the setenv script to set up all these variables.
$ cd omnetpp-6.2.0
$ source setenv
To set the environment variables permanently, edit .profile, .zprofile or .zshenv in your
home directory and add a line something like this:
Check [Link] to make sure it contains the settings you need. In most cases you
don’t need to change anything in it.
In the top-level OMNeT++ directory, type:
$ ./configure
The configure script detects installed software and configuration of your system. It writes
the results into the [Link] file, which will be read by the makefiles during the build
process.
Note: If there is an error during configure, the output may give hints about what went
wrong. Scroll up to see the messages. (You may need to increase the scrollback buffer size
of the terminal and re-run ./configure.) The script also writes a very detailed log of its
operation into [Link] to help track down errors. Since [Link] is very long, it is
recommended that you open it in an editor and search for phrases like error or the name of
the package associated with the problem.
When ./configure has finished, you can compile OMNeT++. Type in the terminal:
$ make
Tip: To take advantage of multiple processor cores, add the -j4 option to the make command
line.
Note: The build process will not write anything outside its directory, so no special privileges
are needed.
Tip: The make command will seemingly compile everything twice. This is because both
debug and optimized versions of the libraries are built. If you only want to build one set of
the libraries, specify MODE=debug or MODE=release:
12 Chapter 4. macOS
Installation Guide, Release 6.2.0
You can now verify that the sample simulations run correctly. For example, the aloha simu-
lation is started by entering the following commands:
$ cd samples/aloha
$ ./aloha
By default, the samples will run using the Qtenv environment. You should see nice gui
windows and dialogs.
$ omnetpp
If you would like to be able to launch the IDE via Applications, the Dock or a desktop shortcut,
do the following: open the omnetpp-6.2.0 folder in Finder, go into the ide subfolder, create
an alias for the omnetpp program there (right-click, Make Alias), and drag the new alias into
the Applications folder, onto the Dock, or onto the desktop.
Alternatively, run one or both of the commands below:
$ make install-menu-item
$ make install-desktop-icon
When you try to build a project in the IDE, you may get the following warning message:
Toolchain “. . . ” is not supported on this platform or installation. Please go to the
Project menu, and activate a different build configuration. (You may need to switch
to the C/C++ perspective first, so that the required menu items appear in the
Project menu.)
If you encounter this message, choose Project > Properties > C/C++ Build > Tool Chain Editor
> Current toolchain > GCC for OMNeT++.
The IDE is documented in detail in the User Guide.
If you need to recompile the OMNeT++ components with different flags (e.g. different opti-
mization), then change the top-level OMNeT++ directory, edit [Link] accordingly,
then type:
$ ./configure
$ make clean
$ make
Tip: To take advantage of multiple processor cores, add the -j4 option to the make command
line.
If you want to recompile just a single library, then change to the directory of the library (e.g.
cd src/sim) and type:
$ make clean
$ make
By default, libraries are compiled in both debug and release mode. If you want to make
release or debug builds only, use:
$ make MODE=release
or
$ make MODE=debug
By default, shared libraries will be created. If you want to build static libraries, set
SHARED_LIBS=no in [Link] and re-configure your project.
Note: The built libraries and programs are immediately copied to the lib/ and bin/ subdi-
rectories.
4.13.1 OpenMPI
MacOS does not come with OpenMPI, so you must install it manually. You can install it
from the Homebrew repo ([Link] by typing brew install open-mpi. In this case,
you have to manually set the MPI_CFLAGS and MPI_LIBS variables in [Link] and
re-run ./configure.
4.13.2 Akaroa
Akaroa 2.7.9, which is the latest version at the time of writing, does not support macOS. You
may try to port it using the porting guide from the Akaroa distribution.
14 Chapter 4. macOS
CHAPTER
FIVE
LINUX
This guide provides installation instructions for OMNeT++ on various Linux distributions.
The [Link] script, included with OMNeT++, automates much of this process.
The following distributions and versions are explicitly covered by the [Link] script and
have dedicated chapters or sections in this guide:
• Ubuntu: 22.04 LTS, 24.04 LTS, 25.04 (and derivatives like Linux Mint)
• Fedora: 42 (and similar RPM-based distributions)
• Red Hat Enterprise Linux (RHEL) / AlmaLinux: 9.x and 10.x (and compatible distri-
butions like Rocky Linux, CentOS Stream)
• OpenSUSE: Tumbleweed (rolling release)
• Arch Linux: (rolling release)
This chapter describes the general installation process common to these distributions. For
distribution-specific details, particularly regarding the installation of prerequisite system
packages, please refer to the relevant chapter:
• ch-ubuntu
• ch-fedora
• ch-redhat
• ch-opensuse
• ch-archlinux
If you are using the [Link] script, it will attempt to auto-detect your distribution and
install the necessary system packages.
Note: If your Linux distribution is not listed above, you still may be able to use some
distro-specific instructions in this Guide.
Ubuntu derivatives (Ubuntu instructions may apply):
• Kubuntu, Xubuntu, Edubuntu, . . .
• Linux Mint
Some Debian-based distros (Ubuntu instructions may apply, as Ubuntu itself is based on
Debian):
• Knoppix and derivatives
• Mepis
Some Fedora-based distros (Fedora instructions may apply):
15
Installation Guide, Release 6.2.0
• Simplis
• Eeedora
OMNeT++ requires several packages to be installed on the computer. These packages include
the C++ compiler (gcc or clang) and several other libraries and programs. These packages can
be installed from the software repositories of your Linux distribution.
See the chapter specific to your Linux distribution for instructions on installing the
packages needed by OMNeT++.
Generally, you will need superuser permissions to install packages.
Not all packages are available from software repositories; some (optional) ones need to be
downloaded separately from their web sites, and installed manually. See the section Addi-
tional Packages later in this chapter.
Download OMNeT++ from [Link] Make sure you select to download the Linux
specific archive, omnetpp-6.2.0-linux-x86_64.tgz.
Copy the archive to the directory where you want to install it. This is usually your home
directory, /home/<you>. Open a terminal, and extract the archive using the following com-
mand:
This will create an omnetpp-6.2.0 subdirectory with the OMNeT++ files in it.
Note: On how to open a terminal on your Linux installation, see the chapter specific to your
Linux distribution.
OMNeT++ uses Python for various tools and scripts. It is highly recommended to use a
Python virtual environment to manage dependencies and avoid conflicts with system-wide
Python packages.
The [Link] script automates the creation and setup of this virtual environment for most
Linux distributions.
If you are installing manually or want to understand the process, the typical steps performed
by the script (after system packages, including python3 and python3-venv, are installed)
are:
1. Navigate to the OMNeT++ root directory (e.g., cd omnetpp-6.2.0).
2. Create the virtual environment (this example uses .venv as the directory name):
16 Chapter 5. Linux
Installation Guide, Release 6.2.0
$ source .venv/bin/activate
4. Install required Python packages using pip. It’s also common to upgrade pip itself:
Once the virtual environment is active, your shell prompt will usually change, and calls to
python and pip will use the versions within the .venv directory.
Note: If you use the [Link] script, these steps are generally handled for you.
In general OMNeT++ requires that certain environment variables are set and the omnetpp-
6.2.0/bin directory is in the PATH. Source the setenv script to set up all these variables.
$ cd omnetpp-6.2.0
$ source setenv
To set the environment variables permanently, edit .profile or .zprofile in your home
directory and add a line something like this:
$ ./configure
The configure script detects installed software and configuration of your system. It writes
the results into the [Link] file, which will be read by the makefiles during the build
process.
Note: If there is an error during configure, the output may give hints about what went
wrong. Scroll up to see the messages. (Use Shift+PgUp; you may need to increase the scroll-
back buffer size of the terminal and re-run ./configure.) The script also writes a very
detailed log of its operation into [Link] to help track down errors. Since [Link] is
very long, it is recommended that you open it in an editor and search for phrases like error
or the name of the package associated with the problem.
When ./configure has finished, you can compile OMNeT++. Type in the terminal:
$ make
18 Chapter 5. Linux
Installation Guide, Release 6.2.0
Tip: To take advantage of multiple processor cores, add the -j8 option to the make command
line.
Note: The build process will not write anything outside its directory, so no special privileges
are needed.
Tip: The make command will seemingly compile everything twice. This is because both
debug and optimized versions of the libraries are built. If you only want to build one set of
the libraries, specify MODE=debug or MODE=release:
You can now verify that the sample simulations run correctly. For example, the aloha simu-
lation is started by entering the following commands:
$ cd samples/aloha
$ ./aloha
By default, the samples will run using the Qtenv environment. You should see nice gui
windows and dialogs.
You can launch the OMNeT++ Simulation IDE by typing the following command in the termi-
nal:
$ omnetpp
If you would like to be able to access the IDE from the application launcher or via a desktop
shortcut, run one or both of the commands below:
$ make install-menu-item
$ make install-desktop-icon
Or add a shortcut that points to the omnetpp program in the ide subdirectory by other
means, for example using the Linux desktop’s context menu.
When you try to build a project in the IDE, you may get the following warning message:
Toolchain “. . . ” is not supported on this platform or installation. Please go to the
Project menu, and activate a different build configuration. (You may need to switch
to the C/C++ perspective first, so that the required menu items appear in the
Project menu.)
If you encounter this message, choose Project > Properties > C/C++ Build > Tool Chain Editor
> Current toolchain > GCC for OMNeT++.
The IDE is documented in detail in the User Guide.
If you need to recompile the OMNeT++ components with different flags (e.g. different opti-
mization), then change the top-level OMNeT++ directory, edit [Link] accordingly,
then type:
$ ./configure
$ make cleanall
$ make
If you want to recompile just a single library, then change to the directory of the library (e.g.
cd src/sim) and type:
$ make clean
$ make
By default, libraries are compiled in both debug and release mode. If you want to make
release or debug builds only, use:
$ make MODE=release
or
$ make MODE=debug
By default, shared libraries will be created. If you want to build static libraries, set
SHARED_LIBS=no in [Link] and re-configure your project.
Note: For detailed description of all options please read the Build Options chapter.
20 Chapter 5. Linux
Installation Guide, Release 6.2.0
Note that at this point, MPI, Doxygen and GraphViz have been installed as part of the prereq-
uisites.
5.11.1 Qtenv
OMNeT++ comes with a Qt based runtime environment that supports also 3D visualization.
The new environment can be disabled by the WITH_QTENV=no variable in the [Link]
file and then running ./configure.
5.11.2 Akaroa
Linux distributions do not contain the Akaroa package. It must be downloaded, compiled and
installed manually before installing OMNeT++.
Configure, build and install the Akaroa library. By default, it will be installed into the /usr/
local/akaroa directory.
$ ./configure
$ make
$ sudo make install
Go to the OMNeT++ directory, and (re-)run the configure script. Akaroa will be automatically
detected if you installed it to the default location.
5.11.3 Nemiver
Nemiver is the default debugger for the OMNeT++ just-in-time debugging facility (see the
debugger-attach-on-startup and debugger-attach-on-error configuration options).
Nemiver can be installed via the package manager in most Linux distros. For example, on
Ubuntu and other Debian-based distros you can install it by the following command:
22 Chapter 5. Linux
CHAPTER
SIX
UBUNTU
This chapter provides additional information for installing OMNeT++ on Ubuntu Linux instal-
lations. The overall installation procedure is described in the Linux chapter.
The following Ubuntu releases are known to work (based on the [Link] script):
• Ubuntu 22.04 LTS
• Ubuntu 24.04 LTS
• Ubuntu 25.04 (and likely newer versions)
The instructions below assume that you use the default desktop and the bash shell. If you use
another desktop environment or shell, you may need to adjust the instructions accordingly.
Before starting the installation, it’s a good practice to refresh the database of available pack-
ages. Type in the terminal:
To install the required packages, ensure you are in the root directory of your OMNeT++
download. The following commands will install the necessary dependencies.
First, install the core development tools and libraries:
$ sudo apt install -y make diffutils pkg-config ccache clang lld gdb lldb \
bison flex perl sed gawk python3 python3-pip python3-venv python3-dev \
libxml2-dev zlib1g-dev doxygen graphviz xdg-utils libdw-dev
Next, install packages for the graphical environment (Qtenv and IDE). If you do not need GUI
support (e.g., for a server installation), you can skip this step and later configure OMNeT++
with WITH_QTENV=no and WITH_OSG=no.
23
Installation Guide, Release 6.2.0
After installing system packages, it’s good practice to clean the local repository of retrieved
package files:
Next, set up a Python virtual environment for OMNeT++. In the root directory of your OM-
NeT++ download:
Then, install the required Python packages into the virtual environment:
Note: The commands above install Clang as the C++ compiler and LLD as the linker. If
you prefer to use GCC and the system’s default linker, you can adjust the package list
accordingly (e.g., replace clang with g++ and omit lld) and set the PREFER_CLANG=no
and PREFER_LLD=no options in the [Link] file or during the ./configure step.
If you skip the GUI or 3D packages, remember to disable the corresponding features
(WITH_QTENV=no, WITH_OSG=no) in [Link] or during the ./configure step.
To enable the optional parallel simulation support you will need to install the MPI packages:
24 Chapter 6. Ubuntu
Installation Guide, Release 6.2.0
Setting Up Debugging
By default, Ubuntu does not allow ptracing of non-child processes by non-root users.
That is, if you want to be able to debug simulation processes by attaching to them
with a debugger, or similar, you want to be able to use OMNeT++ just-in-time debugging
(debugger-attach-on-startup and debugger-attach-on-error configuration options),
you need to explicitly enable them.
To temporarily allow ptracing non-child processes, enter the following command:
[Link].ptrace_scope = 1
to read
[Link].ptrace_scope = 0
26 Chapter 6. Ubuntu
CHAPTER
SEVEN
FEDORA
This chapter provides additional information for installing OMNeT++ on Fedora installations.
The overall installation procedure is described in the Linux chapter.
The following Fedora release is known to work:
• Fedora 42 (and likely newer versions)
$ sudo dnf install -y make ccache clang awk lld lldb gdb bison flex perl \
python3-devel python3-pip libxml2-devel zlib-devel doxygen graphviz \
xdg-utils libdwarf-devel
Next, install packages for the graphical environment (Qtenv and IDE). If you do not need GUI
support (e.g., for a server installation), you can skip this step and later configure OMNeT++
with WITH_QTENV=no and WITH_OSG=no.
After installing system packages, it’s good practice to clean the local repository of retrieved
package files:
Next, set up a Python virtual environment for OMNeT++. In the root directory of your OM-
NeT++ download:
Then, install the required Python packages into the virtual environment:
27
Installation Guide, Release 6.2.0
Note: The commands above install Clang as the C++ compiler and LLD as the linker. If
you prefer to use GCC and the system’s default linker, you can adjust the package list
accordingly (e.g., replace clang with g++ and omit lld) and set the PREFER_CLANG=no
and PREFER_LLD=no options in the [Link] file or during the ./configure step.
If you skip the GUI or 3D packages, remember to disable the corresponding features
(WITH_QTENV=no, WITH_OSG=no) in [Link] or during the ./configure step.
To enable the optional parallel simulation support you will need to install the MPI package:
Note that openmpi will not be available by default, it needs to be activated in every session
with the
command. When in doubt, use module avail to display the list of available modules. If you
need MPI in every session, you may add the module load command to your startup script
(.bashrc).
28 Chapter 7. Fedora
CHAPTER
EIGHT
This chapter provides additional information for installing OMNeT++ on Red Hat Enterprise
Linux (RHEL) and AlmaLinux distributions.
Note: You will need Red Hat Enterprise Linux Desktop Workstation for OMNeT++. The
Desktop Client version does not contain development tools.
To install the required packages, type in the terminal. You may need sudo privileges for these
commands.
First, enable the EPEL (Extra Packages for Enterprise Linux) repository, which provides ad-
ditional packages:
$ sudo dnf install -y epel-release
Next, install packages for the graphical environment (Qtenv and IDE). If you do not need
GUI support, you can skip this step and later configure OMNeT++ with WITH_QTENV=no and
WITH_OSG=no.
$ sudo dnf install -y qt6-qttools-devel qt6-qtbase-devel qt6-qtsvg qt6-
˓→qtwayland
Next, set up a Python virtual environment for OMNeT++. In the root directory of your OM-
NeT++ download:
29
Installation Guide, Release 6.2.0
Then, install the required Python packages into the virtual environment:
Note: The commands above install Clang as the C++ compiler and LLD as the linker. If
you prefer to use GCC and the system’s default linker, you can adjust the package list ac-
cordingly (e.g., replace clang with g++ and omit lld) and set the PREFER_CLANG=no and
PREFER_LLD=no options in the [Link] file or during the ./configure step. If you
skip the GUI packages or due to the lack of OpenSceneGraph, remember to disable the cor-
responding features (WITH_QTENV=no, WITH_OSG=no) in [Link] or during the ./
configure step.
Note that openmpi will not be available by default, it needs to be activated in every session
with the
command, where <arch> is your architecture (usually x86_64). When in doubt, use module
avail to display the list of available modules. If you need MPI in every session, you may add
the module load command to your startup script (.bashrc).
8.3 SELinux
You may need to turn off SELinux when running certain simulations. To do so, click on Sys-
tem > Administration > Security Level > Firewall, go to the SELinux tab, and choose Disabled.
You can verify the SELinux status by typing the sestatus command in a terminal.
Note: From OMNeT++ 4.1 on, makefiles that build shared libraries include the chcon -t
textrel_shlib_t lib<name>.so command that properly sets the security context for the
library. This should prevent the SELinux-related “cannot restore segment prot after reloc:
Permission denied” error from occurring, unless you have a shared library which was built
using an obsolete or hand-crafted makefile that does not contain the chcon command.
NINE
OPENSUSE
This chapter provides additional information for installing OMNeT++ on openSUSE installa-
tions. The overall installation procedure is described in the Linux chapter.
The following openSUSE release is supported:
• openSUSE Leap 15.4+
It was tested on the following architectures:
• Intel 64-bit
$ sudo zypper install -y make ccache clang lld lldb gdb bison gawk flex
˓→perl \
xdg-utils libdw-devel
Next, install packages for the graphical environment (Qtenv and IDE). If you do not need GUI
support (e.g., for a server installation), you can skip this step and later configure OMNeT++
with WITH_QTENV=no and WITH_OSG=no.
After installing system packages, it’s good practice to clean the local repository of retrieved
package files:
Next, set up a Python virtual environment for OMNeT++. In the root directory of your OM-
NeT++ download:
31
Installation Guide, Release 6.2.0
Then, install the required Python packages into the virtual environment:
Note: The commands above install Clang as the C++ compiler and LLD as the linker. If
you prefer to use GCC and the system’s default linker, you can adjust the package list
accordingly (e.g., replace clang with g++ and omit lld) and set the PREFER_CLANG=no
and PREFER_LLD=no options in the [Link] file or during the ./configure step.
If you skip the GUI or 3D packages, remember to disable the corresponding features
(WITH_QTENV=no, WITH_OSG=no) in [Link] or during the ./configure step.
To enable the optional parallel simulation support you will need to install the MPI package:
Note that openmpi will not be available by default, first you need to log out and log in again,
or source your .profile script:
$ . ~/.profile
32 Chapter 9. OpenSUSE
CHAPTER
TEN
ARCH LINUX
This chapter provides additional information for installing OMNeT++ on Arch Linux. The
overall installation procedure is described in the Linux chapter.
These instructions assume you are using the pacman package manager.
First, ensure your system’s package database is up to date and install the core development
tools and libraries:
$ sudo pacman -Sy --needed --noconfirm make diffutils ccache clang pkgconf
˓→lld lldb gdb \
bison gawk flex perl python python-pip libxml2 zlib doxygen graphviz \
xdg-utils libdwarf
Next, install packages for the graphical environment (Qtenv and IDE). If you do not need GUI
support (e.g., for a server installation), you can skip this step and later configure OMNeT++
with WITH_QTENV=no and WITH_OSG=no.
For 3D visualization support in Qtenv, install the OpenSceneGraph package. If you do not
need 3D support, you can skip this step and later configure OMNeT++ with WITH_OSG=no.
After installing system packages, it’s good practice to clean the package cache:
Note: The commands above install Clang as the C++ compiler and LLD as the linker. If
you prefer to use GCC and the system’s default linker, you can adjust the package list
accordingly (e.g., replace clang with gcc and omit lld) and set the PREFER_CLANG=no
and PREFER_LLD=no options in the [Link] file or during the ./configure step.
If you skip the GUI or 3D packages, remember to disable the corresponding features
(WITH_QTENV=no, WITH_OSG=no) in [Link] or during the ./configure step.
To enable the optional parallel simulation support you will need to install an MPI package
(e.g., OpenMPI):
33
Installation Guide, Release 6.2.0
Refer to the Arch Linux documentation for managing MPI environments if needed.
ELEVEN
GENERIC UNIX
11.1 Introduction
This chapter provides additional information for installing OMNeT++ on Unix-like operating
systems not specifically covered by this Installation Guide. The list includes FreeBSD, Solaris,
and Linux distributions not covered in other chapters.
Note: In addition to Windows and macOS, the Simulation IDE will only work on Linux
x86/arm 64-bit platforms. Other operating systems (FreeBSD, Solaris, etc.) and architec-
tures may still be used as simulation platforms, without the IDE.
11.2 Dependencies
Note: You may opt to use gcc instead of the clang compiler and/or use the system default
linker instead of lld by setting the PREFER_CLANG and PREFER_LLD variables in the config-
[Link] file. If you do not need the 3D visualization capabilities, you can disable them in the
[Link] file, too.
Warning: The IDE requires GLIBC 2.28 version or later, so you will need at least Debian
10, RedHat 8 or Ubuntu 18.10 to run the IDE.
The following packages are strongly recommended, because their absence results in severe
feature loss:
Qt 5.9 or later
Required by the Qtenv simulation runtime environment. You need the devel packages
that include header files as well.
OpenSceneGraph (3.4+) and osgEarth (2.9+)
These packages will enable 3D visualization in Qtenv. You need the devel packages that
include header files as well.
35
Installation Guide, Release 6.2.0
The following packages are required if you want to take advantage of some advanced OM-
NeT++ features:
LibXML2
LibXML2 is needed for OMNeT++ to be able to DTD validate an XML file. The devel
packages (that include the header files) are needed.
GraphViz, Doxygen
These packages are used by the NED documentation generation feature of the IDE.
When they are missing, documentation will have less content.
MPI
openmpi or some other MPI implementation is required to support parallel simulation
execution.
Akaroa
Implements Multiple Replications In Parallel (MRIP). Akaroa can be downloaded from
the project’s website.
The exact names of these packages may differ across distributions.
If you have a distro unrelated to the ones covered in this Installation Guide, you need to
figure out what is the established way of installing packages on your system, and what are
the names of the packages you need.
11.3.1 Qt
If your platform does not have suitable Qt packages, you may still use OMNeT++ to run
simulations from the command line. To disable the Qtenv runtime environment, use:
$ ./configure WITH_QTENV=no
This will prevent the build system to link with Qt libraries. It is also recommended if you are
installing OMNeT++ from a remote terminal session.
11.3.2 MPI
OMNeT++ is not sensitive to the particular MPI implementation. You may use OpenMPI, or
any other standards-compliant MPI package.
Download OMNeT++ from [Link] Make sure you select to download the
generic archive, [Link].
Copy the archive to the directory where you want to install it. This is usually your home
directory, /home/<you>. Open a terminal, and extract the archive using the following com-
mand:
This will create an omnetpp-6.2.0 subdirectory with the OMNeT++ files in it.
In general OMNeT++ requires that certain environment variables are set and the omnetpp-6.
2.0/bin directory is in the PATH. Source the setenv script to set up all these variables.
$ cd omnetpp-6.2.0
$ source setenv
To set the environment variables permanently, edit .profile or .zprofile in your home
directory and add a line something like this:
$ ./configure
The configure script detects installed software and configuration of your system. It writes
the results into the [Link] file, which will be read by the makefiles during the build
process.
Note: If there is an error during configure, the output may give hints about what went
wrong. Scroll up to see the messages. (Use Shift+PgUp; you may need to increase the scroll-
back buffer size of the terminal and re-run ./configure.) The script also writes a very
detailed log of its operation into [Link] to help track down errors. Since [Link] is
very long, it is recommended that you open it in an editor and search for phrases like error
or the name of the package associated with the problem.
The configure script tries to build and run small test programs that are using specific
libraries or features of the system. You can check the [Link] file to see which test
program has failed and why. In most cases the problem is that the script cannot figure
out the location of a specific library. Specifying the include file or library location in the
[Link] file and then re-running the configure script usually solves the problem.
When ./configure has finished, you can compile OMNeT++. Type in the terminal:
$ make
Tip: To take advantage of multiple processor cores, add the -j8 option (for 8 cores) to the
make command line.
Note: The build process will not write anything outside its directory, so no special privileges
are needed.
Tip: The make command will seemingly compile everything twice. This is because both
debug and optimized versions of the libraries are built. If you only want to build one set of
the libraries, specify MODE=debug or MODE=release:
You can now verify that the sample simulations run correctly. For example, the aloha simu-
lation is started by entering the following commands:
$ cd samples/aloha
$ ./aloha
By default, the samples will run using the Qtenv environment. You should see nice gui
windows and dialogs.
Note: The IDE is supported only on 64-bit versions of Windows, macOS and Linux.
You can run the IDE by typing the following command in the terminal:
$ omnetpp
If you would like to be able to access the IDE from the application launcher or via a desktop
shortcut, run one or both of the commands below:
$ make install-menu-item
$ make install-desktop-icon
Note: The above commands assume that your system has the xdg commands, which most
modern distributions do.
11.9.1 Akaroa
If you wish to use Akaroa, it must be downloaded, compiled, and installed manually before
installing OMNeT++.
Configure, build and install the Akaroa library. By default, it will be installed into the /usr/
local/akaroa directory.
$ ./configure
$ make
$ sudo make install
Go to the OMNeT++ directory, and (re-)run the configure script. Akaroa will be automatically
detected if you installed it to the default location.
TWELVE
BUILD OPTIONS
The [Link] file contains several options that can be used to fine-tune the simula-
tion libraries.
You always need to re-run the configure script in the installation root after changing the
[Link] file.
$ ./configure
After this step, you have to remove all previous libraries and recompile OMNeT++:
$ make cleanall
$ make
Options:
PREFER_CLANG=no
If both gcc and clang are installed on your system, setting this variable to no will force
the configure script to use gcc as C++ compiler.
<COMPONENTNAME>_CFLAGS, <COMPONENTNAME>_LIBS
The [Link] file contains variables for defining the compile and link options
needed by various external libraries. By default, the configure command detects these
automatically, but you may override the auto detection by specifying the values by hand.
(e.g. <COMP>_CFLAGS=-I/path/to/comp/includedir and <COMP>_LIBS=-L/path/to/
comp/libdir -lnameoflib.)
WITH_PARSIM=no
Use this variable to explicitly disable parallel simulation support in OMNeT++.
WITH_NETBUILDER=no
This option allows you to leave out the NED language parser and the network builder.
(This is needed only if you are building your network with C++ API calls and you do not
use the built-in NED language parser at all.)
WITH_QTENV=no
This will prevent the build system to link with the Qt libraries. Use this option if your
platform does not have a suitable Qt package or you will run the simulation only in
command line mode. (i.e. You want to run OMNeT++ in a remote terminal session.)
WITH_OSG=no
This will prevent the build system to use OpenScreenGraph which is used for 3D visu-
alization in Qtenv.
WITH_OSGEARTH=no
This will prevent the build system to use osgEarth which is used for 2D/3D mapping
and visualization in Qtenv.
41
Installation Guide, Release 6.2.0
CFLAGS_[RELEASE/DEBUG]
To change the compiler command line options the build process is using, you should
specify them in the CFLAGS_RELEASE and CFLAGS_DEBUG variables. By default, the flags
required for debugging or optimization are detected automatically by the configure
script. If you set them manually, you should specify all options you need. It is rec-
ommended to check what options are detected automatically (check the [Link]
after running configure and look for the CFLAGS_[RELEASE/DEBUG] variables.) and
add/modify those options manually in the [Link] file.
LDFLAGS
Linker command line options can be explicitly set using this variable. It is recommended
to check what options are detected automatically (check the [Link] after run-
ning configure and look for the LDFLAGS variable.) and add/modify those options
manually in the [Link] file.
SHARED_LIBS
This variable controls whether the OMNeT++ build process will create static or dynamic
libraries. By default, the OMNeT++ runtime is built as a set of shared libraries. If
you want to build a single executable from your simulation, specify SHARED_LIBS=no in
[Link] to create static OMNeT++ libraries and then reconfigure (./configure)
and recompile OMNeT++ (make cleanall; make). Once the OMNeT++ static libraries
are correctly built, your own project have to be rebuilt, too. You will get a single, stati-
cally linked executable, which requires only the NED and INI files to run.
When you build OMNeT++ on your machine, several directory names are compiled into the
binaries. This makes it easier to set up OMNeT++ in the first place, but if you rename the
installation directory or move it to another location in the file system, the built-in paths
become invalid and the correct paths have to be supplied via environment variables.
The following environment variables are affected (in addition to PATH, which also needs to be
adjusted):
OMNETPP_IMAGE_PATH
This variable contains the list of directories where Qtenv looks for icons. Set it to point
to the images/ subdirectory of your OMNeT++ installation.
LD_LIBRARY_PATH
This variable contains the list of additional directories where shared libraries are looked
for. Initially, LD_LIBRARY_PATH is not needed because shared libraries are located via
the rpath mechanism. When you move the installation, you need to add the lib/ sub-
directory of your OMNeT++ installation to LD_LIBRARY_PATH.
the PATH variable must contain the directory where shared libraries (DLLs) are present.
By default, the configure script detects the following compilers automatically in the path:
• Clang (clang, clang++)
• GNU C/C++ (gcc, g++)
If you want to use compilers other than the above ones, you should specify the compiler name
in the CC and CXX variables, and re-run the configuration script.
Note: Different compilers may have different command line options. If you use a com-
piler other than the default gcc, you may have to revise the CFLAGS_[RELEASE/DEBUG] and
LDFLAGS variables.