This guide has been tested with Fedora 28 1.1 x86_64. Please read it in full before you proceed to familiarize yourself with the build procedure.
Several other distributions have specific build guides and a general Linux build guide is also available.
This guide assumes you are using terminal
, also known as console
, command-line
or simply cli
. Commands need to be run at the terminal, one at a time and in the provided order.
This is a comment that provides context:
this is a command
this is another command
and yet another one
Example: Clone Kodi's current master branch:
git clone https://github.com/xbmc/xbmc kodi
Commands that contain strings enclosed in angle brackets denote something you need to change to suit your needs.
git clone -b <branch-name> https://github.com/xbmc/xbmc kodi
Example: Clone Kodi's current Krypton branch:
git clone -b Krypton https://github.com/xbmc/xbmc kodi
Several different strategies are used to draw your attention to certain pieces of information. In order of how critical the information is, these items are marked as a note, tip, or warning. For example:
NOTE: Linux is user friendly... It's just very particular about who its friends are.
TIP: Algorithm is what developers call code they do not want to explain.
WARNING: Developers don't change light bulbs. It's a hardware problem.
back to top | back to section top
Make sure git
is installed:
sudo dnf install git
Clone Kodi's current master branch:
cd $HOME
git clone https://github.com/xbmc/xbmc kodi
If you get a package not found
type of message with the below command, remove the offending package(s) from the install list and reissue the command. Take a note of the missing dependencies and, after a successful step completion, build the missing dependencies manually.
NOTE: Kodi requires a compiler with C++14 support, i.e. gcc >= 4.9 or clang >= 3.4
Install build dependencies:
sudo dnf install alsa-lib-devel autoconf automake avahi-compat-libdns_sd-devel avahi-devel bluez-libs-devel bzip2-devel cmake curl dbus-devel flatbuffers flatbuffers-devel fmt-devel fontconfig-devel freetype-devel fribidi-devel fstrcmp-devel gawk gcc gcc-c++ gettext gettext-devel giflib-devel gperf gtest java-11-openjdk-headless jre lcms2-devel libao-devel libass-devel libbluray-devel libcap-devel libcdio-devel libcec-devel libcurl-devel libidn2-devel libjpeg-turbo-devel libmicrohttpd-devel libmpc-devel libnfs-devel libplist-devel libpng12-devel libsmbclient-devel libtool libtool-ltdl-devel libudev-devel libunistring libunistring-devel libusb-devel libuuid-devel libva-devel libvdpau-devel libxml2-devel libXmu-devel libXrandr-devel libxslt-devel libXt-devel lirc-devel lzo-devel make mariadb-devel mesa-libEGL-devel mesa-libGL-devel mesa-libGLU-devel mesa-libGLw-devel mesa-libOSMesa-devel nasm openssl-devel openssl-libs patch pcre-devel pulseaudio-libs-devel python3-devel python3-pillow rapidjson-devel shairplay-devel sqlite-devel swig taglib-devel tinyxml-devel trousers-devel uuid-devel yasm zlib-devel
WARNING: Make sure you copy paste the entire line or you might receive an error or miss a few dependencies.
NOTE: Fedora 28 and older don't provide java-11-openjdk-headless
. Install java-9-openjdk-headless
instead.
Building for Wayland requires some extra packages:
sudo dnf install mesa-libGLES-devel wayland-devel waylandpp-devel wayland-protocols-devel
Similarly, building for GBM also requires some extra packages:
sudo dnf install libinput-devel libxkbcommon-devel mesa-libGLES-devel mesa-libgbm-devel
Optional packages that you might want to install for extra functionality (generating doxygen documentation, for instance):
sudo dnf install doxygen mariadb-devel
NOTE: For developers and anyone else who builds frequently it is recommended to install ccache
to expedite subsequent builds of Kodi.
You can install it with:
sudo dnf install ccache
TIP: If you have multiple computers at home, distcc
will distribute build workloads of C and C++ code across several machines on a network. Team Kodi may not be willing to give support if problems arise using such a build configuration.
You can install it with:
sudo dnf install distcc
See the general Linux build guide for reference.