Personal tools
The Open Lighting Project has moved!

We've launched our new site at www.openlighting.org. This wiki will remain and be updated with more technical information.

Difference between revisions of "OLA on Linux"

From wiki.openlighting.org

Jump to: navigation, search
m (Known Issues)
Line 1: Line 1:
 
This describes how to get [[OLA]] working on a Linux system either from the git repo or by using a [http://code.google.com/p/linux-lighting/downloads/list released tarball].
 
This describes how to get [[OLA]] working on a Linux system either from the git repo or by using a [http://code.google.com/p/linux-lighting/downloads/list released tarball].
  
=Checkout or Download an Archive=
+
=Install dependencies =
 
 
Either download a tarball from the releases page, or check out the git repo with the following command:
 
 
 
  git clone https://code.google.com/p/linux-lighting/ ola
 
 
 
If you don't have '''git''' yet, you'll need to install it with your distro's package manager.
 
 
 
=Install libraries=
 
  
 
You need a couple of libraries installed for everything to work correctly. Some of these are available as packages in distros but others need to be downloaded and built manually.
 
You need a couple of libraries installed for everything to work correctly. Some of these are available as packages in distros but others need to be downloaded and built manually.
  
First up you'll need the following:
+
First you'll need at least the following:
 
* cppunit
 
* cppunit
 
* uuid or ossp uuid
 
* uuid or ossp uuid
 
* pkg-config
 
* pkg-config
 
* curses
 
* curses
 +
* lex (or flex)
 +
* yacc (or bison)
 +
* the protocol buffers library  [http://code.google.com/p/protobuf/ http://code.google.com/p/protobuf/] (version 2.3.0 or later)
 +
* microhttpd  [ftp://ftp.gnu.org/gnu/libmicrohttpd/ ftp://ftp.gnu.org/gnu/libmicrohttpd/] (if you want the web UI). You need version >= 0.4.0 of microhttpd
  
 
Debian/Ubuntu users can install them with apt:
 
 
  apt-get install libcppunit-dev libcppunit-1.12-1 uuid-dev pkg-config libncurses5-dev zlib1g-dev
 
  
 
If you're building from git you'll also need the following:
 
If you're building from git you'll also need the following:
Line 30: Line 22:
 
* autoconf
 
* autoconf
  
  apt-get install libtool autoconf automake
+
== Debian / Ubuntu ==
  
 +
Debian/Ubuntu users can install them with apt:
  
Next, you need '''Protocol Buffers''' [http://code.google.com/p/protobuf/ http://code.google.com/p/protobuf/] version 2.3.0 from Google (BSD license). Most likely, you'll need to download and build them yourself. Note that 2.4.0 won't work yet as some of the functionality has changed.
+
  sudo apt-get install libcppunit-dev libcppunit-1.12-1 uuid-dev pkg-config libncurses5-dev libtool autoconf automake g++ libmicrohttpd-dev libmicrohttpd5 protobuf-c-compiler libprotobuf-lite6 python-protobuf libprotobuf-dev  zlib1g-dev bison flex
  
Debian (and Ubuntu) users can, in some cases, use the following packages (not yet in stable):
+
Note: More recent distributions may offer libprotobuf-lite7 instead of libprotobuf-lite6, which is an acceptable substitution.
libprotobuf2 (libprotobuf3), libprotobuf-dev, protobuf-compiler
 
  
As of Ubuntu 11.04 (in 10.04 they are too old), protocol buffer development packages can be installed with the following command:
+
If you're using Ubuntu 11.04 or later you can just use the command above. The versions of libprotobuf in earlier versions of Ubuntu are too old, so you'll need to install them by hand.
  
  apt-get install libprotobuf-dev protobuf-compiler
 
  
Finally, if you want to use the built in webserver, you'll need '''microhttpd'''. Note: you'll need version >= 0.4.0 of microhttpd else you will get errors:
+
== Other Distributions ==
 
 
* [ftp://ftp.gnu.org/gnu/libmicrohttpd/ ftp://ftp.gnu.org/gnu/libmicrohttpd/]
 
  
 +
Install using your package manager, or build everything by hand
  
Once everything is installed, run ldconfig as root to pick up the new libraries
+
If you installed things by hand (rather than using your package manager), you need to run ldconfig as root to pick up the new libraries
  
 
   sudo  ldconfig
 
   sudo  ldconfig
 +
 +
=Checkout or Download an Archive=
 +
 +
You can either download a tarball, or pull the latest version from the git repo
 +
 +
== Tarball ==
 +
 +
 +
== Git ==
 +
 +
If you don't have '''git''' yet, you'll need to install it with your distro's package manager. On Debian / Ubuntu run:
 +
 +
  apt-get install git
 +
 +
 +
Check out the git repo with the following command:
 +
 +
  git clone https://code.google.com/p/linux-lighting/ ola
  
  

Revision as of 09:40, 14 May 2012

This describes how to get OLA working on a Linux system either from the git repo or by using a released tarball.

Install dependencies

You need a couple of libraries installed for everything to work correctly. Some of these are available as packages in distros but others need to be downloaded and built manually.

First you'll need at least the following:


If you're building from git you'll also need the following:

  • libtool
  • automake
  • autoconf

Debian / Ubuntu

Debian/Ubuntu users can install them with apt:

 sudo apt-get install libcppunit-dev libcppunit-1.12-1 uuid-dev pkg-config libncurses5-dev libtool autoconf automake  g++ libmicrohttpd-dev libmicrohttpd5 protobuf-c-compiler libprotobuf-lite6 python-protobuf libprotobuf-dev  zlib1g-dev bison flex

Note: More recent distributions may offer libprotobuf-lite7 instead of libprotobuf-lite6, which is an acceptable substitution.

If you're using Ubuntu 11.04 or later you can just use the command above. The versions of libprotobuf in earlier versions of Ubuntu are too old, so you'll need to install them by hand.


Other Distributions

Install using your package manager, or build everything by hand

If you installed things by hand (rather than using your package manager), you need to run ldconfig as root to pick up the new libraries

 sudo  ldconfig

Checkout or Download an Archive

You can either download a tarball, or pull the latest version from the git repo

Tarball

Git

If you don't have git yet, you'll need to install it with your distro's package manager. On Debian / Ubuntu run:

 apt-get install git


Check out the git repo with the following command:

 git clone https://code.google.com/p/linux-lighting/ ola


Run autoreconf

If this is the first time run with -i to install the missing files

autoreconf -i

Do the usual build steps

You can pass additional options to ./configure . Run

 ./configure --help

to see all options. The most popular option is --enable-python-libs to build the Python Client Module. If you want to use the RDM responder tests add --enable-rdm-tests.

Once you've decided on the options, it's time to build OLA. If you have a multi-core machine, you can speed up the build by using make -j N. A good value of N is the number of cores on your machine. On a MacBook Pro (4 core) using -j 4 reduced the build time from 5 minutes to 2.5 minutes.

./configure --enable-rdm-tests
make
make check
sudo make install

Finally run ldconfig so you can use the new libraries.

 sudo ldconfig

Device drivers

Note that, for some devices, it is necessary to install drivers for OLA to work with them. For example, the Open DMX USB device needs an additional kernel module that could be built using the instuctions on LLA_and_Q_Light_Controller_Ubuntu_Tutorial. For other devices, refer to the corresponding device page on this wiki.

Known Issues

If you get an error like the following:

/bin/sh ./libtool --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I.   -I/opt/local/var/macports/software/protobuf-cpp/2.0.3_0/opt/local/include/  -g -O2 -c -o ltdl.lo ltdl.c
./libtool: line 464: CDPATH: command not found
/Users/simonn/lighting/lla/libltdl/libtool: line 464: CDPATH: command not found
/Users/simonn/lighting/lla/libltdl/libtool: line 1142: func_opt_split: command not found
libtool: Version mismatch error.  This is libtool 2.2.6, but the
libtool: definition of this LT_INIT comes from an older release.
libtool: You should recreate aclocal.m4 with macros from libtool 2.2.6
libtool: and run autoconf again.

Your system uses a different version of libtool. Run:

 libtoolize --ltdl -c -f

and then start from the autoreconf step again.

If you should get the following error try to fix it with one of two available solutions:

Rpc.pb.cc: In copy constructor 'ola::rpc::RpcMessage::RpcMessage(const ola::rpc::RpcMessage&)': 
Rpc.pb.cc:143: error: base class 'class google::protobuf::Message' should be explicitly initialized in the copy constructor 

You should be able to prevent this by editing ./src/Makefile.am, removing -Werror and then start from the autoreconfig step again.