1 | Please see the latest Installation instructions on http://ariba-underlay.org/
|
---|
2 | here: http://ariba-underlay.org/trac/spovnet-base/wiki/BaseInstall
|
---|
3 |
|
---|
4 | Please see also http://spovnet.de/ for further information
|
---|
5 | about Ariba and its application.
|
---|
6 |
|
---|
7 | Prerequisites
|
---|
8 | =============
|
---|
9 | ariba depends on libraries that may not be installed on your system:
|
---|
10 |
|
---|
11 | * Boost (version >=1.39)
|
---|
12 | * Log4cxx (version >= 0.10.0)
|
---|
13 | * GMP (no specific version)
|
---|
14 |
|
---|
15 | Furthermore, you need default development tools - that are most likely already installed on your system - such as
|
---|
16 | gcc/g++, autoconf, automake, aclocal, libtool, liblt-dev ...
|
---|
17 |
|
---|
18 | Quick Install (If all dependencies are satisfied)
|
---|
19 | =============
|
---|
20 |
|
---|
21 | ariba currently build on Linux systems. Our reference platform is
|
---|
22 | Ubuntu 8.04 with the g++ compiler version 4.1. However, latest
|
---|
23 | Ubuntu releases should work, too. Download the latest
|
---|
24 | ariba package from the the download site
|
---|
25 | http://ariba-underlay.org/downloads
|
---|
26 | or get the latest trunk code:
|
---|
27 | svn co https://svn.tm.kit.edu/SpoVNet-KA/entwicklung/ariba/trunk ariba-trunk
|
---|
28 |
|
---|
29 | Extract the archive and change into the project directory:
|
---|
30 |
|
---|
31 | > tar xfz ./ariba-x.x.x.tar.gz
|
---|
32 | > cd ariba-x.x.x
|
---|
33 |
|
---|
34 | For SVN checkout you have to
|
---|
35 | > cd ariba-trunk
|
---|
36 |
|
---|
37 | Now, configure, compile, and install ariba (if not all libraries
|
---|
38 | needed by Ariba are available on your system, read the section
|
---|
39 | 'Prequisites').
|
---|
40 |
|
---|
41 | If no configure script is available (e.g. when you checked out an svn
|
---|
42 | version), run the ./bootstrap script first and then type:
|
---|
43 |
|
---|
44 | > ./configure
|
---|
45 | > make
|
---|
46 | > make install
|
---|
47 |
|
---|
48 | HINT: you may use
|
---|
49 | > make -j 2
|
---|
50 | for a double processor/core system to speed up the compilation,
|
---|
51 | make -j 4 if you have quad-core respectively, and so on. If
|
---|
52 | the compilation stops, try make without the -j option again.
|
---|
53 |
|
---|
54 |
|
---|
55 | In case you don't want to install Ariba into your system but to a
|
---|
56 | local place, do:
|
---|
57 |
|
---|
58 | > mkdir build
|
---|
59 | > ./configure --prefix=$PWD/build
|
---|
60 | > make
|
---|
61 | > make install
|
---|
62 |
|
---|
63 |
|
---|
64 | Local install (Download library dependencies and install ariba in a
|
---|
65 | ============= local subdirectory)
|
---|
66 |
|
---|
67 |
|
---|
68 | If the required libraries are not available on your system or don't
|
---|
69 | want to install them to the system you can use the bootstrap_libs
|
---|
70 | script that comes with the ariba package. It will download all
|
---|
71 | dependencies, compile and install them locally, and compile and
|
---|
72 | install ariba:
|
---|
73 |
|
---|
74 | > tar xfz ./ariba-x.x.x.tar.gz
|
---|
75 | > cd ariba-x.x.x
|
---|
76 | > ./bootstrap_libs
|
---|
77 |
|
---|
78 | This script will automatically download all necessary libraries and
|
---|
79 | compile them inside a new ./libs subdirectory and install them into
|
---|
80 | ./build. In the end the ariba library itself is compiled to
|
---|
81 | ./build. You can safely delete the ./libs subdirectory after the
|
---|
82 | process.
|
---|
83 |
|
---|
84 | Here is the manual way to go: If you install Ariba locally and have
|
---|
85 | the required libraries also installed locally, you can use a
|
---|
86 | config.site script to make it easier. The config.site file must reside
|
---|
87 | in a folder called share. If your install path is /home/foo/local and
|
---|
88 | you do a ./configure --prefix=/home/foo/local, ariba headers will be
|
---|
89 | installed in /home/foo/local/include, and the ariba library in
|
---|
90 | /home/foo/local/lib. To use a config.site script, create a folder
|
---|
91 | /home/foo/local/share and create a file config.site. Such a file has
|
---|
92 | paths towards required header files and libraries.
|
---|
93 |
|
---|
94 | with_boost=/home/foo/Libraries/include
|
---|
95 | test -z "$CPPFLAGS" && CPPFLAGS='-I/home/foo/Libraries/include'
|
---|
96 | test -z "$LDFLAGS" && LDFLAGS='-L/home/foo/Libraries/lib'
|
---|
97 |
|
---|
98 | If you now do a ./configure --prefix=/home/foo/local, the config.site
|
---|
99 | will be found and the paths therein used for finding libraries. If you
|
---|
100 | e.g. have multiple libraries distributed in their own include folders,
|
---|
101 | you can also have multiple includes:
|
---|
102 |
|
---|
103 | test -z "$CPPFLAGS" && CPPFLAGS='-I/home/foo/Libraries/include -I/home/foo/otherlibrary/include'
|
---|
104 |
|
---|
105 | Running the PingPong Sample
|
---|
106 | ===========================
|
---|
107 | The PingPong binary pingpong is installed in build/bin. It has one
|
---|
108 | parameter, a configuration file. You can find sample configuration
|
---|
109 | files in the etc/pingpongconfig folder. If no configuration file is
|
---|
110 | given, the node will randomly select its NodeID but will not find
|
---|
111 | other nodes. This is because bootstrap modules are selected in the
|
---|
112 | configuration file.
|
---|
113 |
|
---|
114 | > ./pingpong ../../etc/pingpong/settings_node1.cnf
|
---|
115 |
|
---|
116 | If this fails to find the libariba you may have to set
|
---|
117 | the LD_LIBRARY_PATH correctly in your current terminal,
|
---|
118 | or better add it to your .bashrc
|
---|
119 |
|
---|
120 | > export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/user/ariba/build/lib
|
---|
121 |
|
---|
122 | When running the pingpong application it will output a large number of
|
---|
123 | log messages and the initiator will wait for other nodes to join. You
|
---|
124 | can start them using the configuration files settings_node1.cnf and
|
---|
125 | settings_node2.cnf. You may need to adjust the configurations files:
|
---|
126 | currently both node1 and node2 try to join the initiator on the local
|
---|
127 | machine. This will only work if you start all instances on a local
|
---|
128 | machine.
|
---|
129 |
|
---|
130 | Once the PingPong sample is running and the nodes have connected, each
|
---|
131 | node will send out ping messages to every node he knows in the overlay
|
---|
132 | structure every 5 seconds. You can now e.g. test mobility of Ariba and
|
---|
133 | change the IP address of a node, or swith from LAN connection to
|
---|
134 | WLAN. The links established by the PingPong sample through Ariba are
|
---|
135 | mobility invariant and automatically repaired. Selecting a compiler
|
---|
136 |
|
---|
137 | As the g++-4.3 compiler is very restrictive when compiling C++ and you
|
---|
138 | will have some trouble with Boost and Log4cxx, we suggest to use
|
---|
139 | e.g. g++-4.1. You then have to compile the libraries and Ariba with
|
---|
140 | this compiler. You can tell Log4cxx and Ariba to use a different
|
---|
141 | compiler using:
|
---|
142 |
|
---|
143 | ./configure --prefix=... CXX=g++-4.1
|
---|
144 |
|
---|
145 | This will not work in Boost as the configure script is just a wrapper around the Boost Build.System bjam. You can edit the jamfile in the Boost root directory:
|
---|
146 |
|
---|
147 | using gcc : 4.1 ;
|
---|
148 |
|
---|
149 | and then build using bjam as described in http://www.boost.org/doc/libs/1_38_0/more/getting_started/unix-variants.html.
|
---|
150 |
|
---|
151 | Cross-Comiling for Maemo
|
---|
152 | ========================
|
---|
153 | Ariba runs on Nokia Maemo 4 (tested) and probably Maemo 5. We have
|
---|
154 | tested Ariba on an N810 device. Cross-Compiling is done using
|
---|
155 | Scratchbox. Use the preassembled Scratchbox version provided by Nokia
|
---|
156 | which will install and configure the complete Scratchbox system
|
---|
157 | automatically.
|
---|
158 |
|
---|
159 | The Ariba configure will test for Maemo systems. Internally there are
|
---|
160 | a number of special cases where handling on Maemo is different from
|
---|
161 | normal Linux. If you require special handling, do the following in
|
---|
162 | your code:
|
---|
163 |
|
---|
164 | #include "ariba/config.h"
|
---|
165 | ...
|
---|
166 | #ifdef HAVE_MAEMO
|
---|
167 | // special Maemo handling
|
---|
168 | #endif
|
---|
169 |
|
---|
170 | Overview of special configure options
|
---|
171 | =====================================
|
---|
172 | There are several options to configure that are specific to Ariba:
|
---|
173 |
|
---|
174 | * --enable-debug=yes - for building a debug build
|
---|
175 | * --enable-profiling=yes - for profiling with gprof
|
---|
176 | * --enable-logcolors=yes - for colorful logging output
|
---|
177 | * --enable-doxygen=yes - for generating doxygen documentation (do a make html-local in ariba/docu/doxygen)
|
---|