HOW-TO:Compile Kodi for Linux

From Kodi
Jump to: navigation, search
Home icon grey.png   ▶ Development ▶ Compiling ▶ HOW-TO:Compile Kodi for Linux
Cleanup.png This page or section may require cleanup, updating, spellchecking, reformatting and/or updated images. Please improve this page if you can. The discussion page may contain suggestions.

Warning: This is only a copy and paste from the README.linux just to get this article started. Please refer to the GIT version of README.linux to be sure you got the latest edition!
Information: The compile process below is basic and further information about compiling in own platform can be found in Readme.your-platform


1 Prerequisites

Supported Linux Operating-System installed on a supported computer, currently the officially supported OS are
Ubuntu Desktop Edition
Ubuntu Server Edition
Ubuntu Minimal
Ubuntu for ARM
Note: Note that it is also possible to compile and run 32-bit XBMC under 64-bit (AMD64/EMT64) Ubuntu if you run it in a 32bit chroot.
Other working distributions (but officially unsupported) are
Some hardware requirements

x86-based computer. No other special hardware is required for development, as developers can compile using the "make sdl_2d option" (see README.linux). However for end-users the minimum requirement is a 3D GPU (Graphics Processing Unit) that at least supports Shader Model 3.0 and OpenGL 2.0 (that features 24bpp or 32bpp for 3D hardware-acceleration support, which XBMC GUI need to run smootly at an acceptable frame-rate). Graphic adapters that support DirectX version 9.0c or later usually meet all of those mentioned requirements, (Team-XBMC recommends NVIDIA GeForce 6150 or later as NVIDIA are currently the manufacturer that offers good device-drivers for Linux (and NVIDIA GeForce 6150 or later supports OpenGL 2.0).

  • Correctly installed graphics device-drivers which supports 24bpp or 32bpp for 3D hardware-acceleration, (Team-XBMC recommends that you run Envy which is a application that automatically downloads and installs the correct proprietary device-driver for your ATI or NVIDIA graphic chip).

2 Getting the source code

For the first time:

sudo apt-get install git-core -y
cd $HOME
git clone git://

In order to update the source code (and clean old make files):

cd $HOME/xbmc
git clean -xfd
git reset --hard
git pull --rebase

3 Installing required Ubuntu packages

The current list of required packages for each supported version is located in the README.linux file in the GIT

Use a single command to get all build dependencies

For this, you need to specify the PPA in your apt sources.Where are XBMC packages in Ubuntu.

If you've specified the PPA, edit the file /etc/apt/sources.list.d/team-xbmc-ppa-*.list. Remove the # before the line starting with deb-src so that apt-get can get the source dependency list for Kodi.

Method 1

With ppa

sudo apt-get update

Here is the magic command to get the build dependencies (used to compile the version on the PPA).

sudo apt-get build-dep xbmc
Method 2
sudo apt-get update

Without ppa (only Dependencies including the ones on Method 1

sudo apt-get install automake autopoint bison build-essential ccache cmake curl cvs default-jre fp-compiler gawk gdc gettext git-core gperf libasound2-dev libass-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libbluetooth-dev libbluray-dev libbluray1 libboost-dev libboost-thread-dev libbz2-dev libcap-dev libcdio-dev libcec-dev libcec1 libcrystalhd-dev libcrystalhd3 libcurl3 libcurl4-gnutls-dev libcwiid-dev libcwiid1 libdbus-1-dev libenca-dev libflac-dev libfontconfig-dev libfreetype6-dev libfribidi-dev libglew-dev libiso9660-dev libjasper-dev libjpeg-dev libltdl-dev liblzo2-dev libmad0-dev libmicrohttpd-dev libmodplug-dev libmp3lame-dev libmpeg2-4-dev libmpeg3-dev libmysqlclient-dev libnfs-dev libogg-dev libpcre3-dev libplist-dev libpng-dev libpostproc-dev libpulse-dev libsamplerate-dev libsdl-dev libsdl-gfx1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev libshairport-dev libsmbclient-dev libsqlite3-dev libssh-dev libssl-dev libswscale-dev libtiff-dev libtinyxml-dev libtool libudev-dev libusb-dev libva-dev libva-egl1 libva-tpi1 libvdpau-dev libvorbisenc2 libxml2-dev libxmu-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev libyajl-dev mesa-utils nasm pmount python-dev python-imaging python-sqlite swig unzip yasm zip zlib1g-dev

4 How to compile

4.1 Default compile and install

Requires 3D GPU that has supported OpenGL 3D hardware acceleration, set bitdepth to 24bpp or 32bpp

sudo make install

5 Compiling Libtag

libtag 1.8 is a requirement to compile XBMC from GIT, If you are using Ubuntu 12.04LTS or older use method below.

make -C lib/taglib
make -C lib/taglib install

6 Compiling libnfs

make -C lib/libnfs
make -C lib/libnfs install

6.1 ./configure command line switches

These switches are possible when running configure:

  • --prefix=/path
    • Install XBMC to /path rather than default (/usr/local)
  • --disable-gl
    • Much much slower GUI rendering but works on all adapters and bitdepths. For development purposes only.
  • --disable-debug
    • No debug information (smaller executable, no FreeMem text in screens)
    • open issue: FreeMem is still shown even with --disable-debug

It is also possible to combine these options, for example:

./configure --disable-debug --disable-gl

6.2 Quicker compilation

By adding -j<number> to the make command, you describe how many cores will be used. So for dual core the commands are:

make -j2


make -j2 sdl_2d

Experimental: You could add distcc if you have more than one computer networked. This will run make on several computers sharing the workload between them.

7 How to run

Everything is now taken care of by the install script. Simply run the xbmc command from anywhere:


8 Fullscreen

Toggle FS with \ key while XBMC is running.

9 Multi-monitor Fullscreen

If you have a multi-monitor setup and you want to use fullscreen, make sure to set the env variable SDL_VIDEO_FULLSCREEN_HEAD to the display no. which you want SDL to use for the fullscreen mode.

For e.g. "SDL_VIDEO_FULLSCREEN_HEAD=1 ./xbmc.bin -fs" to tell SDL to use display no.1

10 Weblinks

Personal tools

Wiki help