Kodi Community Forum

Full Version: [HOW-TO] Compile XBMC git master branch on Linux - Bluray optional
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
Compile XBMC master branch on Linux

This guide was originally published on my site. For clarity and brevity, I removed a few things (recompiling XBMC, managing different compiled XBMC versions, compiling with VirtualBox to always have a clean compiling environment, etc). I also removed a bunch of stuff explaining what the commands do. Consider this to be the quick guide and the original to be the I-wish-to-find-out-more-about-this-stuff guide. Either way, you will end up with a compiled from master XBMC. Original guide can be found in the above link or on my signature. Drop me a line, suggestion, whatever, either here or on the site.

These instructions are for Ubuntu 10.10 Maverick 32bits Desktop but can help you compile on other Linux distributions or previous Ubuntu versions.

I don't like to use sudo. If you do, add sudo before every command.
In order to change to superuser (root), you need to give it a password. Open terminal and issue the following command:

Quote:sudo passwd root

Change to root:

Quote:su

You are now the proud owner of superuser superpowers. Use them wisely!

Installing XBMC build dependencies

Quote:apt-get install git-core autopoint checkinstall libvdpau-dev libvdpau1 make g++ gcc gawk pmount libtool nasm yasm automake cmake gperf zip unzip bison libsdl-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libfribidi-dev liblzo2-dev libfreetype6-dev libsqlite3-dev libogg-dev libasound-dev python-sqlite libglew-dev libcurl3 libcurl4-gnutls-dev libxrandr-dev libxrender-dev libmad0-dev libogg-dev libvorbisenc2 libsmbclient-dev libmysqlclient-dev libpcre3-dev libdbus-1-dev libhal-dev libhal-storage-dev libjasper-dev libfontconfig-dev libbz2-dev libboost-dev libenca-dev libxt-dev libxtst-dev libxmu-dev libpng-dev libjpeg-dev libpulse-dev mesa-utils libcdio-dev libsamplerate-dev libmpeg3-dev libflac-dev libiso9660-dev libass-dev libssl-dev fp-compiler gdc libwavpack-dev libmpeg2-4-dev libmicrohttpd-dev libmodplug-dev libssh-dev gettext

Add (almost) all dependencies with a few lines. Last time I tried, it didn't work as expected. Want to give it a try? Run

Quote:add-apt-repository ppa:team-xbmc-svn/ppa
apt-get update
apt-get build-dep xbmc

Either way, install all the dependencies needed.

Compile XBMC with Bluray support. If you don't want it, ignore and remove --enable-libbluray from the configure command. Warning: does not provide the ability to play protected Blurays, only unprotected. Add libbluray to the system

Quote:add-apt-repository ppa:hackurx/libbluray
apt-get update
apt-get install libbluray

Change to building directory and clone XBMC git

Quote:cd /usr/local/src
git clone git://github.com/xbmc/xbmc.git

Change to XBMC directory

Quote:cd xbmc

You are in XBMC git master branch but check it anyway

Quote:git checkout master

Building XBMC

Quote:./bootstrap
./configure --prefix=/usr --disable-pulse --enable-libbluray --enable-vdpau
make -j3

The -j3 make switch controls how many cores to use when compiling. Set accordingly.

Quote:checkinstall -y --fstrans=no --install=yes --pkgname=hudo-xbmc --pkgversion="git`date +%Y%m%d`.`git rev-list --abbrev-commit --max-count=1 HEAD`"

Done! Go to Applications >> Sound & Video >> XBMC Media Center.
I suggest using sudo for the things that need it and doing everything else as a normal user.

Cheers,
Jonathan
sudo friendly version

Installing XBMC build dependencies

Quote:sudo apt-get install git-core autopoint checkinstall libvdpau-dev libvdpau1 make g++ gcc gawk pmount libtool nasm yasm automake cmake gperf zip unzip bison libsdl-dev libsdl-image1.2-dev libsdl-gfx1.2-dev libsdl-mixer1.2-dev libfribidi-dev liblzo2-dev libfreetype6-dev libsqlite3-dev libogg-dev libasound-dev python-sqlite libglew-dev libcurl3 libcurl4-gnutls-dev libxrandr-dev libxrender-dev libmad0-dev libogg-dev libvorbisenc2 libsmbclient-dev libmysqlclient-dev libpcre3-dev libdbus-1-dev libhal-dev libhal-storage-dev libjasper-dev libfontconfig-dev libbz2-dev libboost-dev libenca-dev libxt-dev libxtst-dev libxmu-dev libpng-dev libjpeg-dev libpulse-dev mesa-utils libcdio-dev libsamplerate-dev libmpeg3-dev libflac-dev libiso9660-dev libass-dev libssl-dev fp-compiler gdc libwavpack-dev libmpeg2-4-dev libmicrohttpd-dev libmodplug-dev libssh-dev gettext

Add (almost) all dependencies with a few lines. Last time I tried, it didn't work as expected. Want to give it a try? Run

Quote:sudo add-apt-repository ppa:team-xbmc-svn/ppa
sudo apt-get update
sudo apt-get build-dep xbmc

Either way, install all the dependencies needed.

Compile XBMC with Bluray support. If you don't want it, ignore and remove --enable-libbluray from the configure command. Warning: does not provide the ability to play protected Blurays, only unprotected. Add libbluray to the system

Quote:sudo add-apt-repository ppa:hackurx/libbluray
sudo apt-get update
sudo apt-get install libbluray

Making sure you're on your home directory and clone XBMC git. If you want to compile XBMC on /usr/local/src directory like I do or any other directory other that home, every command as to be preceded with sudo.

Quote:cd ~
git clone git://github.com/xbmc/xbmc.git

Change to XBMC directory

Quote:cd xbmc

You are in XBMC git master branch but check it anyway

Quote:git checkout master

Building XBMC

Quote:./bootstrap
./configure --prefix=/usr --disable-pulse --enable-libbluray --enable-vdpau
make -j3

The -j3 make switch controls how many cores to use when compiling. Set accordingly.

Quote:sudo checkinstall -y --fstrans=no --install=yes --pkgname=hudo-xbmc --pkgversion="git`date +%Y%m%d`.`git rev-list --abbrev-commit --max-count=1 HEAD`"

Done! Go to Applications >> Sound & Video >> XBMC Media Center.
edit: post was unnecessary - sorry
sudo friendly version added, as per Jonathan suggestion.

h.udo
Hi,

I keep running into this error after running "make"

/home/xbmc/setup/xbmc/xbmc/dbwrappers/sqlitedataset.cpp:210: undefined reference to `sqlite3_open_v2'
collect2: ld returned 1 exit status
make: *** [xbmc.bin] Error 1

I feel like I've searched everywhere for a solution. Any ideas?

Thanks
OK.
If you installed all the needed dependencies, libsqlite3-dev should be in your system. Is it?

System you are building on? 32 or 64bits? git commit? configure command options?
I do have libsqlite3-dev. I'm using ubuntu on apple tv. 32 bits. Everything seems to be up to date and I've followed your guide in terms of the git commit and configure command options.
Well, I have no way to compile on AppleTV. I don't own one to test with.

Furthermore, my guide doesn't point to a specific git commit. It points to XBMC git master branch HEAD commit. That means it always points to the latest commit.

To find out the commit, issue

git rev-list --max-count=1 HEAD
or
git rev-list --abbrev-commit --max-count=1 HEAD

Please seek help on the AppleTV section. I know we are talking of Ubuntu but the machines are completely different. It seems to be a problem with dependency libraries.

The offending line in that is file is:

Quote:if (sqlite3_open_v2(db_fullpath.c_str(), &conn, flags, NULL)==SQLITE_OK)

Please post if you find the solution. I'll investigate some more.

h.udo
You don't need to sudo to git clone. That was the point I was making. Anything after installing the packages for build can be done without sudo (other than make install, should you wish to do that).
Apparently ubuntu doesn't like to make git clones in /usr/local/src without sudo. It also doesn't like a lot of things if we do them _out_ of /home/$user. Just throws the "not allowed" and "you're not root" at you. The arrogant little prick.

This is exactly why I don't like sudo. Too much hassle. A simple su and life is so much simpler.

BTW, I ran into errors running ./bootstrap and ./configure without sudo.

I'm going to upgrade my main machine to Maverick tomorrow and give it another spin. Things may be different in a real system. A VirtualBox machine isn't the same thing. Close, but not the same...
Ok, so why are you extracting to /usr/local/src ?
sqlite3_open_v2 missing relates to the version of sqlite3 that is installed. Older version will not have this symbol. You might have to manually download and install an updated sqlite3. sqilte3-3.6.11 does have this symbol.
i had sqlite 3.7.5 amalgamation installed. i uninstalled it and tried to install sqlite3-3.6.11 and got this error


./.libs/libsqlite3.so: undefined reference to `sqlite3BackupUpdate'
./.libs/libsqlite3.so: undefined reference to `sqlite3BackupRestart'
./.libs/libsqlite3.so: undefined reference to `sqlite3BtreeCopyFile'
collect2: ld returned 1 exit status
make: *** [sqlite3] Error 1
jmarshall Wrote:Ok, so why are you extracting to /usr/local/src ?

2 reasons:

- because I like it
- because I don't like to use home. Way too many different things automatically dumped there. It just feels... dirty! Laugh I'm a control freak.
Pages: 1 2 3