OK, I found a fix for this and also an old SUSE bug report (from 2004) that seems to (re)appear on our openSUSE 11.0 system. Here is the old bug report: http://sources.redhat.com/ml/libc-alpha/2004-06/msg00116.html It seems that if *both* RPATH and RUNPATH are set in the "Dynamic Section" of the openwns binary, the dlopen() call from library/module/Base.cpp ignores them completely and then fails to load the libraries. However, if only RPATH is set, it honors the setting and correctly loads the libraries. To prevent the RUNPATH to be set, you can compile the main openwns application with (note the -Wl,-disable-new-dtags): g++ -o .build/dbg/openwns-application/application--main--1.0/openwns '-Wl,-disable-new-dtags,-rpath=/data/jan/clean/openwns-sdk/sandbox/dbg/lib' .build/dbg/openwns-application/application--main--1.0/src/Main.o -Lsandbox/dbg/lib -lboost_signals -lpython2.5 -lwns -lboost_program_options -lboost_date_time -lcppunit The resulting openws only has RPATH set: jan@nepomuk:/data/jan/clean/openwns-sdk/tests/unit/unitTests$ objdump -p openwns-no-dtags openwns-no-dtags: file format elf64-x86-64 Program Header: PHDR off 0x0000000000000040 vaddr 0x0000000000400040 paddr 0x0000000000400040 align 2**3 filesz 0x00000000000001f8 memsz 0x00000000000001f8 flags r-x INTERP off 0x0000000000000238 vaddr 0x0000000000400238 paddr 0x0000000000400238 align 2**0 filesz 0x000000000000001c memsz 0x000000000000001c flags r-- LOAD off 0x0000000000000000 vaddr 0x0000000000400000 paddr 0x0000000000400000 align 2**21 filesz 0x0000000000003fb9 memsz 0x0000000000003fb9 flags r-x LOAD off 0x0000000000004d70 vaddr 0x0000000000604d70 paddr 0x0000000000604d70 align 2**21 filesz 0x00000000000003a8 memsz 0x00000000000006f8 flags rw- DYNAMIC off 0x0000000000004da0 vaddr 0x0000000000604da0 paddr 0x0000000000604da0 align 2**3 filesz 0x0000000000000240 memsz 0x0000000000000240 flags rw- NOTE off 0x0000000000000254 vaddr 0x0000000000400254 paddr 0x0000000000400254 align 2**2 filesz 0x0000000000000038 memsz 0x0000000000000038 flags r-- EH_FRAME off 0x0000000000003804 vaddr 0x0000000000403804 paddr 0x0000000000403804 align 2**2 filesz 0x0000000000000114 memsz 0x0000000000000114 flags r-- STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**3 filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- RELRO off 0x0000000000004d70 vaddr 0x0000000000604d70 paddr 0x0000000000604d70 align 2**0 filesz 0x0000000000000290 memsz 0x0000000000000290 flags r-- Dynamic Section: NEEDED libboost_signals.so NEEDED libpython2.5.so.1.0 NEEDED libwns.so NEEDED libboost_program_options.so NEEDED libboost_date_time.so NEEDED libcppunit-1.12.so.0 NEEDED libstdc++.so.6 NEEDED libm.so.6 NEEDED libgcc_s.so.1 NEEDED libc.so.6 RPATH /data/jan/clean/openwns-sdk/sandbox/dbg/lib INIT 0x0000000000402188 FINI 0x0000000000403558 HASH 0x0000000000400290 GNU_HASH 0x0000000000400518 STRTAB 0x0000000000400fa8 SYMTAB 0x00000000004006f0 STRSZ 0x0000000000000cc1 SYMENT 0x0000000000000018 DEBUG 0x0000000000000000 PLTGOT 0x0000000000604fe8 PLTRELSZ 0x0000000000000318 PLTREL 0x0000000000000007 JMPREL 0x0000000000401e70 RELA 0x0000000000401d98 RELASZ 0x00000000000000d8 RELAENT 0x0000000000000018 VERNEED 0x0000000000401d28 VERNEEDNUM 0x0000000000000003 VERSYM 0x0000000000401c6a Version References: required from libc.so.6: 0x09691a75 0x00 05 GLIBC_2.2.5 required from libgcc_s.so.1: 0x0b792650 0x00 04 GCC_3.0 required from libstdc++.so.6: 0x08922974 0x00 03 GLIBCXX_3.4 0x056bafd3 0x00 02 CXXABI_1.3