Tuesday, May 6, 2014

Issues with Boost on Ubuntu

As reported by users of libcppa, the library fails to compile - or rather: to link - on the latest Ubuntu release with Boost. To get a running version of libcppa, please configure it using ./configure --standalone-build. This will disable the context-switching feature of libcppa. Context-switching is only relevant in case you want to have cooperative scheduling of blocking actors. When disabling this feature, all blocking actors are implicitly detached.

Since Boost only enables context-switching, we are considering to turn this feature into an opt-in rather than an opt-out at compile time. In case your system is lacking Boost, you won't get the context-switching actors anyways (and will not be affected by this error). Other parts of the library do not depend on Boost, so there is no degradation of performance or functionality.

If you run into a similar error on a different Linux distribution, please let me know.


  1. These issues may exist because Ubuntu did not compile Boost in C++11 mode. As a result, link-time issues arise due to ABI incompatibilities. I could fix this in the past by compiling Boost from scratch with -std=c++11.

  2. I don't have an Ubuntu running as test server ATM, but his was the reported error:

    Linking CXX shared library lib/libcppa.so
    /usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_coroutine.a(standard_stack_allocator_posix.o):
    relocation R_X86_64_32 against `.bss' can not be used when making a
    shared object; recompile with -fPIC
    error adding symbols: Bad value
    collect2: error: ld returned 1 exit status

  3. Fails to compile hello world example from the manual but all unit tests work. Seems like a linking error. Any suggestions?

  4. Because of Boost? Did you disable it using ./configure --standalone-build? Otherwise please post the error log or send it to me directly via mail.

  5. I tried, it didn't make any difference. Once I am sure I've tried everything, I will bother you with the long error log. :)