FAQ » History » Version 5
J. Wienke, 11/07/2011 07:21 PM
1 | 1 | J. Moringen | h1. FAQ |
---|---|---|---|
2 | 1 | J. Moringen | |
3 | 1 | J. Moringen | {{>toc}} |
4 | 1 | J. Moringen | |
5 | 2 | J. Moringen | h2. [C++, Python] I compiled and installed successfully, but communication does not work |
6 | 1 | J. Moringen | |
7 | 1 | J. Moringen | Starting with version 0.5, RSB uses a transport that implements communication within a single process by default. In other words, network communcation is disbabled by default. |
8 | 1 | J. Moringen | |
9 | 1 | J. Moringen | This can be changed in three ways: |
10 | 1 | J. Moringen | |
11 | 1 | J. Moringen | # Globally for all RSB programs running under the UNIX user |
12 | 1 | J. Moringen | Create or modify a RSB configuration file @~/.config/rsb.conf@ to contain the following lines: |
13 | 1 | J. Moringen | <pre> |
14 | 1 | J. Moringen | [transport.spread] |
15 | 1 | J. Moringen | enabled = 1 |
16 | 1 | J. Moringen | [transport.inprocess] |
17 | 1 | J. Moringen | enabled = 0 |
18 | 1 | J. Moringen | </pre> |
19 | 1 | J. Moringen | Lines 3 and 4 can be omitted to enable both transports in parallel. |
20 | 1 | J. Moringen | # Locally for the current directory |
21 | 1 | J. Moringen | Create a RSB configuration file @$(pwd)/rsb.conf@ with the same contents as described above. |
22 | 1 | J. Moringen | # For the current shell |
23 | 1 | J. Moringen | Set and export environment variables as follows |
24 | 1 | J. Moringen | <pre> |
25 | 1 | J. Moringen | $ export RSB_TRANSPORT_SPREAD_ENABLED=1 |
26 | 1 | J. Moringen | $ export RSB_TRANSPORT_INPROCESS_ENABLED=1 |
27 | 1 | J. Moringen | </pre> |
28 | 2 | J. Moringen | |
29 | 2 | J. Moringen | h2. [C++] I compiled and installed successfully, but RSB binaries/libraries produce linker errors at runtime |
30 | 2 | J. Moringen | |
31 | 2 | J. Moringen | The C++ implementation of RSB is built without fixed "rpath":http://en.wikipedia.org/wiki/Rpath by default. As a result, installed RSB binaries and libraries do not contain information regarding the location of their dependencies. This potentially causes runtime linking to fail because the dependencies cannot be located. |
32 | 2 | J. Moringen | |
33 | 3 | J. Moringen | There are two possible solutions: |
34 | 2 | J. Moringen | |
35 | 4 | J. Moringen | # Building and installing RSB with fixed rpath |
36 | 2 | J. Moringen | This can be achieved by configuring RSB with |
37 | 2 | J. Moringen | <pre> |
38 | 5 | J. Wienke | cmake -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE |
39 | 1 | J. Moringen | </pre> |
40 | 5 | J. Wienke | This CMake standard mechanism instructs CMake to set the "RPATH":http://en.wikipedia.org/wiki/Rpath of installed libraries and executables to the values used for building them. Normally the RPATH is stripped at installation time. |
41 | 1 | J. Moringen | # Use of the @LD_LIBRARY_PATH@ variable |
42 | 3 | J. Moringen | When the value of @LD_LIBRARY_PATH@ contains the directory/directories into which RSB (and its dependencies) have been installed, these dependencies can be located at runtime. @LD_LIBRARY_PATH@ can be set, for example, like this |
43 | 3 | J. Moringen | <pre> |
44 | 3 | J. Moringen | $export LD_LIBRARY_PATH=$prefix/lib |
45 | 3 | J. Moringen | </pre> |
46 | 3 | J. Moringen | where @$prefix@ is the prefix directory into which RSB and its dependencies have been installed. |
47 | 3 | J. Moringen | |
48 | 3 | J. Moringen | *This workaround is not permanent and has to be repeated for each new shell that should be able to execute RSB binaries or RSB-based programs.* |