Compiling Ekiga

From Ekiga
(Difference between revisions)
Jump to: navigation, search
(image:Sources.png Compiling instructions: Document spaces compiling problem)
(Update)
 
(29 intermediate revisions by one user not shown)
Line 3: Line 3:
 
You need to compile, in order, ptlib, opal, and ekiga.
 
You need to compile, in order, ptlib, opal, and ekiga.
  
[[image:Gnome-status.png]] This page contains generic instructions.  There are a few pages for particular architectures, but which might be slightly outdated:
+
[[image:Gnome-status.png]] Some outdated information on compiling on FreeBSD is at [[Compile your own SVN version of Ekiga on FreeBSD|compile on FreeBSD]].
* [[Compile your own SVN version of Ekiga on Ubuntu]] (step-by-step)
+
* [[Compile your own stable Ekiga version 3 on Kubuntu 8.04]]
+
* [[Compile your own SVN version of Ekiga on FreeBSD|Compile Ekiga/OPAL/PTLIB from SVN on FreeBSD]]
+
  
 
[[image:Gnome-status.png]] Windows compilation is different, see [[Building Ekiga for Windows]].
 
[[image:Gnome-status.png]] Windows compilation is different, see [[Building Ekiga for Windows]].
Line 12: Line 9:
 
== Dependencies ==
 
== Dependencies ==
 
All the dependencies are tracked by configure, as usually.
 
All the dependencies are tracked by configure, as usually.
 
Not included specially, the usual tools, like a working C/C++ compiling environment and so...
 
  
 
=== PTLib ===
 
=== PTLib ===
Line 24: Line 19:
 
=== Opal ===
 
=== Opal ===
 
'''Mandatory and optional dependencies''': doxygen, autotools-dev, pkg-config, libpt-dev, libcelt-dev, libtheora-dev, libgsm1-dev, libspeex-dev, libspeexdsp-dev, libcapi20-dev.
 
'''Mandatory and optional dependencies''': doxygen, autotools-dev, pkg-config, libpt-dev, libcelt-dev, libtheora-dev, libgsm1-dev, libspeex-dev, libspeexdsp-dev, libcapi20-dev.
 +
 +
* For ekiga >= 5.x, you also need libopus-dev, libvpx-dev
  
 
For non-free codecs, see below their dependencies.
 
For non-free codecs, see below their dependencies.
  
 
=== Ekiga ===
 
=== Ekiga ===
'''Mandatory and optional dependencies''': libsasl2-dev, gettext, libldap2-dev, libpt-dev, libopal-dev, libgconf2-dev, libxv-dev, autotools-dev, gnome-pkg-tools, rarian-compat, intltool, libxml-parser-perl, evolution-data-server-dev, gnome-doc-utils, libavahi-client-dev, libavahi-glib-dev, libgtk2.0-dev, libdbus-glib-1-dev, gnome-common, libnotify-dev, libebook1.2-dev, libxext-dev.
+
'''Mandatory and optional dependencies''': libsasl2-dev, gettext, libldap2-dev, libpt-dev, libopal-dev, autotools-dev, gnome-pkg-tools, rarian-compat, intltool, libxml-parser-perl, evolution-data-server-dev, gnome-doc-utils, libavahi-client-dev, libavahi-glib-dev, libdbus-glib-1-dev, libebook1.2-dev, libxext-dev, boost base and signals, libv4l-dev (for video device hotplugging I think).
  
For stable ekiga (3.2.x) you need libsigc++-2.0-dev also. For unstable ekiga (>= 3.3.x) you need boost base and signals also.
+
* For ekiga <= 4.0.x, you also need libgconf2-dev, libnotify-dev, libgtk2.0-dev, libxv-dev.
 
+
* If you use git repository, you also need libgtk-3-0-dev, libclutter-1.0-dev, libclutter-gst-2.0-dev, libclutter-gtk-1.0-dev, libgstreamer-plugins-base1.0-dev and autotools (automake, autoconf)
If you use git repository, you need autotools (automake, autoconf) too.
+
<!-- and gnome-common (containing file gnome-autogen.sh).-->
  
 
Information about some flags:
 
Information about some flags:
* '''gnome-common''': to support GNU autotools with some scripts
 
 
* '''libsdl''': for full screen support
 
* '''libsdl''': for full screen support
 
* '''libebook''': for Evolution mail client integration
 
* '''libebook''': for Evolution mail client integration
* '''dbus-glib''': for basic control of Ekiga using dbus
+
* '''dbus-glib''': for automatic discovering of devices
  
 
== [[image:Sources.png]] Compiling instructions ==
 
== [[image:Sources.png]] Compiling instructions ==
Line 45: Line 41:
 
The compilation is mostly plug'n'play, using the common triple of <code>configure && make && make install</code> (<code>make install</code> as root, if necessary).  As usually, you need to install all headers of libraries you want to use a certain feature (e.g. OpenLDAP or ALSA), because otherwise ptlib/opal/ekiga will spit out a message ("checking for ...: no") and silently disable support for that feature.
 
The compilation is mostly plug'n'play, using the common triple of <code>configure && make && make install</code> (<code>make install</code> as root, if necessary).  As usually, you need to install all headers of libraries you want to use a certain feature (e.g. OpenLDAP or ALSA), because otherwise ptlib/opal/ekiga will spit out a message ("checking for ...: no") and silently disable support for that feature.
  
I assume that common options, like <code>--prefix</code> are known and used.
+
'''Notes''' on ptlib and opal: The path to the directory where they are installed must not contain spaces; also, you need to build them from their directory, as shown below; finally, using CFLAGS and LDFLAGS is not reliable.
  
 
=== PTLib ===
 
=== PTLib ===
Note that v4l is disabled by default; if you need it, add <tt>--enable-v4l</tt> to ./configure.
 
 
'''Notes''': The path to the directory where ptlib and opal are installed must not contain spaces; also, you need to build ptlib and opal from their directory, as shown below.
 
 
 
Example:
 
Example:
 
  ./configure --prefix=/usr  
 
  ./configure --prefix=/usr  
Line 62: Line 54:
 
  make
 
  make
 
  make install
 
  make install
 +
 +
'''Note''': on some systems, such as Mandriva [http://wiki.mandriva.com/en/Docs/Basic_tasks/Installing_and_removing_software/Installing_from_source#pkgconfig_problems], you can receive an error about not finding ptlib during <code>configure</code> execution.  In that case you might precede configure command with pkgconfig information, like this:
 +
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr
  
 
=== Ekiga ===
 
=== Ekiga ===
Line 68: Line 63:
 
The following options (among others) are recognized:
 
The following options (among others) are recognized:
 
* <code>--disable-gdu</code> disables the generation of the help documentation files (readable with GNOME yelp).
 
* <code>--disable-gdu</code> disables the generation of the help documentation files (readable with GNOME yelp).
* <code>--disable-gconf</code> disables GCONF support
+
* <code>--disable-dbus</code> disables DBUS support for automatic discovery of devices
** it's experimental and was introduced to make the WIN32-port possible
+
 
** it saves it config AND addressbooks into a FILE (usually ~/.config/ekiga.conf or whatever was reported by GLib)
+
Note for Ekiga version 4.0.x: neighbours (seeing all ekiga users in the same network, zeroconf, avahi) are disabled by default, so use <code>--enable-avahi</code> if you need this.
** for the moment, expect some weirdness with the UI and some config keys
+
* <code>--disable-avahi</code> disables the generation of zeroconf Avahi code ("Contacts near me")
+
* <code>--disable-dbus</code> disables generation of Ekiga's DBUS interface (yes, Ekiga can be remote-controlled a bit)
+
  
 
Example:
 
Example:
Line 98: Line 90:
  
 
== Additional dependencies of specific video codecs ==
 
== Additional dependencies of specific video codecs ==
If you want to use also the non-free codecs in Ekiga, this section presents how to build them.
+
Generally, GNU/Linux distributions strip out "non-free" codecs.  You can check if your distribution allows them by installing libav/ffmpeg and use the following command:
 +
$ objdump -T /usr/lib/libavcodec.so.5*|grep 26[34]_decoder
 +
If it shows some lines, then you have them.  Note: this command works only for old versions of libavcodec.
  
=== FFMPEG (SVN) ===
+
Otherwise, you need to build them manually, as shown below.
FFMPEG (SVN) is required for the following video codecs:
+
 
 +
=== ffmpeg / libav ===
 +
FFMPEG is required for the following video codecs:
 
* MPEG 4 Part 2 Video via RFC 3016
 
* MPEG 4 Part 2 Video via RFC 3016
 
* H.264 via RFC 3984
 
* H.264 via RFC 3984
* H.263 + (H.263-1998) via RFC 2429 / RFC 4629
+
* H.263+ (H.263-1998) via RFC 2429 / RFC 4629
  
In order to install the latest version of FFMPEG, check out the SVN repository
+
If you use ekiga >= 3.3.2, then you can install libav/ffmpeg 0.6.2 or later like this:
 
+
svn co svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
+
 
+
afterwards:
+
  
 
  ./configure --enable-shared
 
  ./configure --enable-shared
Line 116: Line 108:
 
  sudo make install
 
  sudo make install
  
=== x264 (GIT) ===
+
=== x264 ===
x264 (GIT) is required for the following video codecs:
+
x264 is required for the following video codecs:
 
* H.264 via RFC 3984
 
* H.264 via RFC 3984
  
In order to install the latest version of x264 check out the GIT repository
+
If you use ekiga >= 3.3.2, then you can install libx264, version 107 or later like this:
 
+
git clone git://git.videolan.org/x264.git
+
 
+
afterwards:
+
  
 
  ./configure --enable-shared
 
  ./configure --enable-shared
 
  make
 
  make
 
  sudo make install
 
  sudo make install
 
=== H.264, MPEG4 Part 2 and H.263+ / H.263-1998 using debian prebuild binaries (maybe working for UBUNTU, too) ===
 
 
*Don't install self build ffmpeg stuff or move it out of the way (to home or /usr/local/src, make uninstall to be sure)
 
 
*Add a debian 'unofficial' multimedia repository mirror (for Your country or near to) to /etc/apt/sources.list:
 
deb http://www.debian-multimedia.org testing main
 
#deb http://debian.netcologne.de/debian-multimedia.org unstable main
 
#deb http://debian.netcologne.de/debian-multimedia.org experimental main
 
 
*Do 'aptitude update'
 
 
*Install the following packages with aptitude (check apt-cache policy <packagename> for interferences):
 
  libavcodeccvs51    library to encode decode multimedia streams - runtime
 
  libavcodeccvs51-dev
 
  libavformatcvs51  ffmpeg file format library
 
  libavformatcvs51-dev
 
  libavutilcvs49        avutil shared libraries
 
  libavutilcvs49-dev
 
 
 
  or ffmpeg + the above -dev packages only (full auto dependencies handling for runtime libs is done by aptitude)
 
 
*Install latest Ekiga, Opal, PTlib SVN head snapshots (source links above) configured as usual.
 
*Look in the installation and check if codecs are there:
 
ls -l <opal-configure-prefix>/lib/opal*/codecs/video
 
-rwxr-xr-x 1 root root 449803 2007-08-09 22:14 h261-vic_video_pwplugin.so
 
-rwxr-xr-x 1 root root 278056 2007-08-09 22:14 h263-1998_video_pwplugin.so
 
-rwxr-xr-x 1 root root 133089 2007-06-17 16:27 h263-ffmpeg_video_pwplugin.so
 
-rwxr-xr-x 1 root root 190334 2007-08-09 22:14 h264_video_pwplugin_helper
 
-rwxr-xr-x 1 root root 303613 2007-08-09 22:14 h264_video_pwplugin.so
 
-rwxr-xr-x 1 root root 190008 2007-08-09 22:14 theora_video_pwplugin.so
 
  
 
== Uninstall Ekiga ==
 
== Uninstall Ekiga ==
Line 165: Line 122:
 
If you want do compile and install (new versions of) ekiga, you should make sure before that you do not have them already installed.
 
If you want do compile and install (new versions of) ekiga, you should make sure before that you do not have them already installed.
  
=== Check if you have previously installed Pwlib, Opal, and Ekiga ===
+
=== Check if you have previously installed PTlib, Opal, and Ekiga ===
  
Some versions of Linux (like Ubuntu) install Ekiga automatically with Gnome Desktop as it is part of it.  If you or your distro have installed Ekiga before, you most likely already have a version of Pwlib & Opal installed.  You must check to see what versions you have ''before'' downloading other versions.  Unless you remove older versions before you start, there is a chance you'll create multiples versions of these libraries on your system, which will stop you from compiling Ekiga.
+
Some versions of Linux (like Ubuntu) install Ekiga automatically with Gnome Desktop as it is part of it.  If you or your distro have installed Ekiga before, you most likely already have a version of PTlib & Opal installed.  You must check to see what versions you have ''before'' downloading other versions.  Unless you remove older versions before you start, there is a chance you'll create multiples versions of these libraries on your system, which will stop you from compiling Ekiga.
  
 
You can check your version of Ekiga from Ekiga's <tt>Help&nbsp;&rarr;&nbsp;About</tt> menu, or open a Terminal and at the prompt, type:
 
You can check your version of Ekiga from Ekiga's <tt>Help&nbsp;&rarr;&nbsp;About</tt> menu, or open a Terminal and at the prompt, type:
Line 173: Line 130:
 
This will show you the version of Ekiga if any properly installed on your system.
 
This will show you the version of Ekiga if any properly installed on your system.
  
You may want to have a closer look to be sure there is no pwlib (pwlib has been renamed to ptlib) and opal in your system as those libraries can be used by other programs than Ekiga:
+
You may want to have a closer look to be sure there is no ptlib and opal in your system as those libraries can be used by other programs than Ekiga:
  
 
Type:
 
Type:
$ whereis pwlib
 
 
  $ whereis ptlib
 
  $ whereis ptlib
 
  $ whereis opal
 
  $ whereis opal
 
  $ whereis ekiga
 
  $ whereis ekiga
 
:[[image:Gnome-status.png]] Alternatively, you can use <tt>find</tt> to get a list of a program's locations, searching in /usr is usualy a good start:
 
:[[image:Gnome-status.png]] Alternatively, you can use <tt>find</tt> to get a list of a program's locations, searching in /usr is usualy a good start:
$ find /usr -name '*pwlib*'
 
 
  $ find /usr -name '*libpt*'
 
  $ find /usr -name '*libpt*'
 
  $ find /usr -name '*opal*'
 
  $ find /usr -name '*opal*'
 
  $ find /usr -name '*ekiga*'
 
  $ find /usr -name '*ekiga*'
  
This will show you if Pwlib, Opal, & Ekiga has been installed.
+
This will show you if PTlib, Opal & Ekiga has been installed.
  
=== Uninstall previously installed pwlib, opal, and Ekiga ===
+
=== Uninstall previously installed ptlib, opal, and Ekiga ===
 
First, you should try your package manager which is distro dependant: Debian and Ubuntu use <tt>synaptic</tt> and <tt>apt</tt>,...
 
First, you should try your package manager which is distro dependant: Debian and Ubuntu use <tt>synaptic</tt> and <tt>apt</tt>,...
and search for "pwlib" "libpt" "opal" "ekiga" in it. Then uninstall all libpt/pwlib/opal/ekiga packages (pwlib sometimes comes with plugins in separate packages and pwlib may be renamed "libpt", uninstall them all).
+
and search for "libpt" "opal" "ekiga" in it. Then uninstall all libpt/opal/ekiga packages (ptlib sometimes comes with plugins in separate packages, uninstall them all).
  
 
FIXME: list of package managers per distro
 
FIXME: list of package managers per distro
  
 
If Ekiga was installed from sources, it is recommended you uninstall them by:
 
If Ekiga was installed from sources, it is recommended you uninstall them by:
  $ cd to appropriate directory (where you compiled Ekiga, then Opal and finaly pwlib)
+
  $ cd to appropriate directory (where you compiled Ekiga, then Opal and finaly ptlib)
 
and as root for each source:  
 
and as root for each source:  
 
  # make uninstall
 
  # make uninstall
 
:[[image:Gnome-status.png]] Tip for Ubuntu users:
 
:[[image:Gnome-status.png]] Tip for Ubuntu users:
 
  $ sudo make uninstall
 
  $ sudo make uninstall

Latest revision as of 09:29, 26 September 2016

Steps: Download sourcesCompile → Execute and Debug

You need to compile, in order, ptlib, opal, and ekiga.

Gnome-status.png Some outdated information on compiling on FreeBSD is at compile on FreeBSD.

Gnome-status.png Windows compilation is different, see Building Ekiga for Windows.

Contents

Dependencies

All the dependencies are tracked by configure, as usually.

PTLib

Mandatory and optional dependencies: autotools-dev, doxygen, pkg-config, bison, flex, libssl-dev, libldap2-dev, libsasl2-dev, libkrb5-dev, libexpat1-dev, libsdl1.2-dev, libdv4-dev, libv4l-dev, libasound2-dev.

Information about some flags:

  • libexpat1-dev: needed for presence indication.
  • libasound2-dev: optional, if you wish to have ALSA support.

Opal

Mandatory and optional dependencies: doxygen, autotools-dev, pkg-config, libpt-dev, libcelt-dev, libtheora-dev, libgsm1-dev, libspeex-dev, libspeexdsp-dev, libcapi20-dev.

  • For ekiga >= 5.x, you also need libopus-dev, libvpx-dev

For non-free codecs, see below their dependencies.

Ekiga

Mandatory and optional dependencies: libsasl2-dev, gettext, libldap2-dev, libpt-dev, libopal-dev, autotools-dev, gnome-pkg-tools, rarian-compat, intltool, libxml-parser-perl, evolution-data-server-dev, gnome-doc-utils, libavahi-client-dev, libavahi-glib-dev, libdbus-glib-1-dev, libebook1.2-dev, libxext-dev, boost base and signals, libv4l-dev (for video device hotplugging I think).

  • For ekiga <= 4.0.x, you also need libgconf2-dev, libnotify-dev, libgtk2.0-dev, libxv-dev.
  • If you use git repository, you also need libgtk-3-0-dev, libclutter-1.0-dev, libclutter-gst-2.0-dev, libclutter-gtk-1.0-dev, libgstreamer-plugins-base1.0-dev and autotools (automake, autoconf)

Information about some flags:

  • libsdl: for full screen support
  • libebook: for Evolution mail client integration
  • dbus-glib: for automatic discovering of devices

Sources.png Compiling instructions

Gnome-status.png Note: make sure you do not have ptlib, opal and ekiga installed on your computer before compiling them, see #Uninstall Ekiga for more information.

The compilation is mostly plug'n'play, using the common triple of configure && make && make install (make install as root, if necessary). As usually, you need to install all headers of libraries you want to use a certain feature (e.g. OpenLDAP or ALSA), because otherwise ptlib/opal/ekiga will spit out a message ("checking for ...: no") and silently disable support for that feature.

Notes on ptlib and opal: The path to the directory where they are installed must not contain spaces; also, you need to build them from their directory, as shown below; finally, using CFLAGS and LDFLAGS is not reliable.

PTLib

Example:

./configure --prefix=/usr 
make
make install

Opal

Example:

./configure --prefix=/usr
make
make install

Note: on some systems, such as Mandriva [1], you can receive an error about not finding ptlib during configure execution. In that case you might precede configure command with pkgconfig information, like this:

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure --prefix=/usr

Ekiga

If you have downloaded Ekiga from git repository, then you don't have a configure script. You should use ./autogen.sh instead of ./configure below (giving the same parameters).

The following options (among others) are recognized:

  • --disable-gdu disables the generation of the help documentation files (readable with GNOME yelp).
  • --disable-dbus disables DBUS support for automatic discovery of devices

Note for Ekiga version 4.0.x: neighbours (seeing all ekiga users in the same network, zeroconf, avahi) are disabled by default, so use --enable-avahi if you need this.

Example:

./configure --prefix=/usr
make
make install


Additional dependencies of specific video codecs

Generally, GNU/Linux distributions strip out "non-free" codecs. You can check if your distribution allows them by installing libav/ffmpeg and use the following command:

$ objdump -T /usr/lib/libavcodec.so.5*|grep 26[34]_decoder

If it shows some lines, then you have them. Note: this command works only for old versions of libavcodec.

Otherwise, you need to build them manually, as shown below.

ffmpeg / libav

FFMPEG is required for the following video codecs:

If you use ekiga >= 3.3.2, then you can install libav/ffmpeg 0.6.2 or later like this:

./configure --enable-shared
make
sudo make install

x264

x264 is required for the following video codecs:

If you use ekiga >= 3.3.2, then you can install libx264, version 107 or later like this:

./configure --enable-shared
make
sudo make install

Uninstall Ekiga

If you want do compile and install (new versions of) ekiga, you should make sure before that you do not have them already installed.

Check if you have previously installed PTlib, Opal, and Ekiga

Some versions of Linux (like Ubuntu) install Ekiga automatically with Gnome Desktop as it is part of it. If you or your distro have installed Ekiga before, you most likely already have a version of PTlib & Opal installed. You must check to see what versions you have before downloading other versions. Unless you remove older versions before you start, there is a chance you'll create multiples versions of these libraries on your system, which will stop you from compiling Ekiga.

You can check your version of Ekiga from Ekiga's Help → About menu, or open a Terminal and at the prompt, type:

$ ekiga --version

This will show you the version of Ekiga if any properly installed on your system.

You may want to have a closer look to be sure there is no ptlib and opal in your system as those libraries can be used by other programs than Ekiga:

Type:

$ whereis ptlib
$ whereis opal
$ whereis ekiga
Gnome-status.png Alternatively, you can use find to get a list of a program's locations, searching in /usr is usualy a good start:
$ find /usr -name '*libpt*'
$ find /usr -name '*opal*'
$ find /usr -name '*ekiga*'

This will show you if PTlib, Opal & Ekiga has been installed.

Uninstall previously installed ptlib, opal, and Ekiga

First, you should try your package manager which is distro dependant: Debian and Ubuntu use synaptic and apt,... and search for "libpt" "opal" "ekiga" in it. Then uninstall all libpt/opal/ekiga packages (ptlib sometimes comes with plugins in separate packages, uninstall them all).

FIXME: list of package managers per distro

If Ekiga was installed from sources, it is recommended you uninstall them by:

$ cd to appropriate directory (where you compiled Ekiga, then Opal and finaly ptlib)

and as root for each source:

# make uninstall
Gnome-status.png Tip for Ubuntu users:
$ sudo make uninstall
Personal tools