mumble-voip_mumble/docs/dev/build-instructions/build_linux.md

5.5 KiB

Building on Linux

These are instructions for performing a regular build using the libraries that are shipped with your distribution. For instructions to build a static version of Mumble, checkout this file.

Dependencies

Ubuntu In order to install the needed dependencies on Ubuntu, you have to run the following command (but see notes below the command):
sudo apt install \
  build-essential \
  cmake \
  pkg-config \
  qt5-qmake \
  qtbase5-dev \
  qttools5-dev \
  qttools5-dev-tools \
  libqt5svg5-dev \
  libboost-dev \
  libssl-dev \
  libprotobuf-dev \
  protobuf-compiler \
  libprotoc-dev \
  libcap-dev \
  libxi-dev \
  libasound2-dev \
  libogg-dev \
  libsndfile1-dev \
  libopus-dev \
  libspeechd-dev \
  libavahi-compat-libdnssd-dev \
  libxcb-xinerama0 \
  libzeroc-ice-dev \
  libpoco-dev \
  g++-multilib

If your version of Ubuntu is giving errors with qt5-default, when running the above command, follow the Debian instructions below.

The dependence on g++-multilib only applies if you are on a 64bit system and want to cross-compile overlay support for 32bit applications as well (which is enabled by default). If you don't do this (-Doverlay-xcompile=OFF when invoking cmake), you also don't have to install g++-multilib.

You will need cmake v3.15 or later. If the version shipped by your distribution is not recent enough, you can install a recent one via the official PPA or from the linked page.

Debian (Stable) In order to install the needed dependencies on Debian, you may run the following command.
sudo apt install \
  build-essential \
  cmake \
  pkg-config \
  qtbase5-dev \
  qtchooser \
  qt5-qmake \
  qtbase5-dev-tools \
  qttools5-dev \
  qttools5-dev-tools \
  libqt5svg5-dev \
  libboost-dev \
  libssl-dev \
  libprotobuf-dev \
  protobuf-compiler \
  libprotoc-dev \
  libcap-dev \
  libxi-dev \
  libasound2-dev \
  libogg-dev \
  libsndfile1-dev \
  libspeechd-dev \
  libavahi-compat-libdnssd-dev \
  libxcb-xinerama0 \
  libzeroc-ice-dev \
  libpoco-dev \
  g++-multilib
  1. There is a problem with Opus, causing crashes on some systems. Disabling the bundled opus version when running cmake might be necessary for now: cmake -Dbundled-opus=OFF ..
  2. Debian has dropped qt5-default, so individual packages are chosen instead. This also affects Ubuntu, as documented here.)
  3. Also, see Ubuntu notes, which explain some things relevant to Debian builds.
CentOS 8 In order to install the needed dependencies on Cent OS 8, you have to run the following command:
sudo dnf -y install epel-release
sudo dnf config-manager --set-enabled PowerTools
sudo dnf group install "Development Tools"
sudo dnf install https://zeroc.com/download/ice/3.7/el8/ice-repo-3.7.el8.noarch.rpm
sudo dnf install libice-c++-devel libice3.7-c++
sudo dnf install \
qt5-devel \
qt5-qtsvg-devel  \
openssl-devel \
protobuf-devel \
libsndfile-devel \
libXi-devel \
libXext-devel \
speech-dispatcher-devel \
avahi-compat-libdns_sd-devel \
alsa-lib-devel \
libICE-devel \
libogg-devel \
boost-devel \
libcap-devel \
poco-devel \
gcc-toolset-9-gcc-c++ 

You will need cmake v3.15 or later. You can install a recent one from the linked page.

OpenSUSE Tumbleweed In order to install the needed dependencies on OpenSUSE Tumbleweed (not Leap), you have to run the following commands:
sudo zypper install -t pattern devel_basis devel_qt5
sudo zypper install \
  libopenssl-devel \
  protobuf-devel \
  poco-devel \
  libsndfile-devel \
  libXi-devel \
  libspeechd-devel \
  avahi-compat-mDNSResponder-devel \
  alsa-devel \
  libcap-devel \
  gcc-c++-32bit

There is no official package for Ice on OpenSUSE Tumbleweed. This means you need to generate the files like so: cmake -Dice=OFF ..

If you are using any other distribution that is not based on one of the distros listed above, you probably have to adapt the commands to your distro manually.

Running cmake

It is recommended to perform a so-called "out-of-source-build". In order to do so, navigate to the root of the Mumble directory and then issue the following commands:

  1. mkdir build (Creates a build directory)
  2. cd build (Switches into the build directory)
  3. cmake .. (Actually runs cmake)

This will cause cmake to create the necessary build files for you. If you want to customize your build, you can pass special flags to cmake in step 3. For all available build options, have a look here.

E.g. if you only want to build the server, use cmake -Dclient=OFF ...

Building

By default cmake will create Makefiles if run on Linux, so in order to build, you can simply run make in the build directory. If you want to parallelize the build (to speed things up), you can use make -j $(nproc).

If you want to stay independent of the type of the generated build files, you should issue cmake --build . (from the build directory) in order to start the compilation. If you want to parallelize the build, use cmake --build . -j <jobs> where <jobs> is the amount of parallel jobs to be run concurrently. A good choice usually is <jobs> = $(nproc).

FAQ

See the general build-FAQ.