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 | |
---|
8 | Prerequisites |
---|
9 | ============= |
---|
10 | ariba depends on libraries that may not be installed on your system: |
---|
11 | |
---|
12 | * Boost (version >=1.42) |
---|
13 | * GMP |
---|
14 | * CMake (version >=2.8) |
---|
15 | |
---|
16 | and optionally on |
---|
17 | |
---|
18 | * Log4Cxx (version >= 0.10.0) for more sophisticated logging |
---|
19 | * Avahi for more efficient bootstrapping in local networks |
---|
20 | * LibBluetooth/Bluez for bluetooth support |
---|
21 | * Doxygen to build the documentation |
---|
22 | |
---|
23 | Furthermore, you need default development tools - that are most likely already |
---|
24 | installed on your system - such as gcc/g++, libtool, liblt-dev ... |
---|
25 | |
---|
26 | |
---|
27 | Quick Install |
---|
28 | ============= |
---|
29 | |
---|
30 | ariba currently builds on Linux systems. Our reference platform is Ubuntu 8.04 |
---|
31 | with the g++ compiler version 4.1. However, latest Ubuntu releases should work |
---|
32 | too. |
---|
33 | |
---|
34 | Download the latest ariba package from the the download site |
---|
35 | http://ariba-underlay.org/downloads: |
---|
36 | |
---|
37 | Extract the archive and change into the project directory: |
---|
38 | > tar xfz ./ariba-x.x.x.tar.gz |
---|
39 | > cd ariba-x.x.x |
---|
40 | |
---|
41 | Alternatively, you could try to use the latest development code from our SVN |
---|
42 | trunk (attention: the code on trunk might break from time to time): |
---|
43 | > svn co https://svn.tm.kit.edu/SpoVNet-KA/entwicklung/ariba/trunk ariba-trunk |
---|
44 | > cd ariba-trunk |
---|
45 | |
---|
46 | Now create a directory to build ariba in: |
---|
47 | > mkdir build |
---|
48 | > cd build |
---|
49 | |
---|
50 | Next the makefiles have to be generated and the source compiled: |
---|
51 | > cmake .. |
---|
52 | > make |
---|
53 | |
---|
54 | HINT: you may use |
---|
55 | > make -j 2 |
---|
56 | for a dual processor/core system to speed up the compilation, |
---|
57 | make -j 4 if you have quad-core respectively, and so on. If |
---|
58 | the compilation stops, try make without the -j option again. |
---|
59 | |
---|
60 | And finally ariba will be installed into the system: |
---|
61 | > make install |
---|
62 | |
---|
63 | |
---|
64 | Custom Build Options |
---|
65 | ==================== |
---|
66 | The build may be customized in various ways by setting CMake options. This can |
---|
67 | be done by giving them as arguments on the command line: |
---|
68 | > cmake .. -DOPTION=value |
---|
69 | |
---|
70 | by using the CMake GUI which lets you set the variables graphically: |
---|
71 | > cmake-gui .. |
---|
72 | |
---|
73 | or running cmake in interactive mode: |
---|
74 | > cmake -i .. |
---|
75 | |
---|
76 | The last two ways also give an overview which options exist. |
---|
77 | |
---|
78 | Important options: |
---|
79 | |
---|
80 | CMAKE_INSTALL_PREFIX - Where to install the compiled files. The default on Unix |
---|
81 | platforms is /usr/local/. If you for example don't want |
---|
82 | or can't install system wide, you can specify a directory |
---|
83 | you have control over. The files will be installed to |
---|
84 | "${prefix}/include/", "${prefix}/lib/" and so on. |
---|
85 | |
---|
86 | CMAKE_BUILD_TYPE - One of "", "Release", "Debug", "RelWithDebInfo" or |
---|
87 | "MinSizeRel". This influences the build in various ways |
---|
88 | (which compiler optimizations are turned on, whether |
---|
89 | debug symbols are included, what warnings to show etc.). |
---|
90 | |
---|
91 | ENABLE_{AVAHI,BLUETOOTH,LOG4CXX} |
---|
92 | - If set to OFF or 0 (ON is the default) it disables the |
---|
93 | support of the feature even if the corresponding library |
---|
94 | (see above) was detected to be present. |
---|
95 | |
---|
96 | <library>_INCLUDE_DIR - Where the directory containing the header files for |
---|
97 | <library> is located. If the library is installed in the |
---|
98 | usual system paths CMake should be able to automatically |
---|
99 | find the right location. If the library is located |
---|
100 | elsewhere (e.g. because you compiled it yourself in your |
---|
101 | home directory) then you may need to set this variable |
---|
102 | manually. |
---|
103 | |
---|
104 | <library>_LIBRARY - Where the library file (aka the .so, .a or .dll file) for |
---|
105 | <library> is located. If the library is installed in the |
---|
106 | usual system paths CMake should be able to automatically |
---|
107 | find the right location. If the library is located |
---|
108 | elsewhere (e.g. because you compiled it yourself in your |
---|
109 | home directory) then you may need to set this variable |
---|
110 | manually. |
---|
111 | |
---|
112 | DOCUMENTATION_GENERATE_GRAPHICS |
---|
113 | - Whether the documentation should include graphics such as |
---|
114 | inheritance and include graphs (OFF by default). This |
---|
115 | might take a long time and consume a lot of space. |
---|
116 | |
---|
117 | CMAKE_{C,CXX}_COMPILER - Which C/C++ compiler to use |
---|
118 | CMAKE_{C,CXX}_FLAGS - Which additional flags to give to the compiler (e.g. -pg |
---|
119 | for profiling support) |
---|
120 | |
---|
121 | |
---|
122 | Building the Documentation |
---|
123 | ========================== |
---|
124 | To build the documentation once you can build the "docu" target: |
---|
125 | > make docu |
---|
126 | |
---|
127 | If you want to build the documentation on every build you can enable the |
---|
128 | ALWAYS_BUILD_DOCUMENTATION option in CMake. |
---|
129 | |
---|
130 | |
---|
131 | Running the PingPong Sample |
---|
132 | =========================== |
---|
133 | The PingPong binary pingpong is installed in "${prefix}/lib/ariba/" or found |
---|
134 | directly in the build tree at "sample/pingpong/pingpong". It has one parameter, |
---|
135 | a configuration file. You can find sample configuration files in the |
---|
136 | "etc/pingpong" folder. If no configuration file is given, the node will randomly |
---|
137 | select its NodeID but will not find other nodes. This is because bootstrap |
---|
138 | modules are selected in the configuration file. |
---|
139 | > ./sample/pingpong/pingpong ../etc/pingpong/settings_node1.cnf |
---|
140 | |
---|
141 | When running the pingpong application it will output a large number of log |
---|
142 | messages and the initiator will wait for other nodes to join. You can start them |
---|
143 | using the configuration files settings_node1.cnf and settings_node2.cnf. You may |
---|
144 | need to adjust the configurations files: currently both node1 and node2 try to |
---|
145 | join the initiator on the local machine. This will only work if you start all |
---|
146 | instances on a local machine. |
---|
147 | |
---|
148 | Once the PingPong sample is running and the nodes have connected, each node will |
---|
149 | send out ping messages to every node he knows in the overlay structure every |
---|
150 | 5 seconds. You can now e.g. test mobility of ariba and change the IP address of |
---|
151 | a node, or switch from LAN connection to WLAN. The links established by the |
---|
152 | PingPong sample through ariba are mobility invariant and automatically repaired. |
---|
153 | |
---|
154 | |
---|
155 | Cross-Compiling for Maemo |
---|
156 | ========================= |
---|
157 | Ariba runs on Nokia Maemo 4 (tested) and probably Maemo 5. We have tested ariba |
---|
158 | on an N810 device. Cross-Compiling is done using Scratchbox. Use the |
---|
159 | preassembled Scratchbox version provided by Nokia which will install and |
---|
160 | configure the complete Scratchbox system automatically. |
---|
161 | |
---|
162 | If you compile for Maemo you have to set the HAVE_MAEMO option in CMake. |
---|
163 | |
---|
164 | Internally there are a number of special cases where handling on Maemo is |
---|
165 | different from normal Linux. If you require special handling, do the following |
---|
166 | in your code: |
---|
167 | |
---|
168 | #include "ariba/config.h" |
---|
169 | ... |
---|
170 | #ifdef HAVE_MAEMO |
---|
171 | // special Maemo handling |
---|
172 | #endif |
---|