ccan dependencies seems to break external projects

Matthieu Patou mat at
Sat Feb 11 15:49:20 MST 2012

Hello Rusty,

I'm trying to compile openchange as described here :

I'm using the latest git tree instead of alpha17, after a couple of 
tweak in the script that setup the prerequisits I have a samba4 with 
using system talloc/tdb/tevent and ldb.

Then I try to build openchange and got:

/usr/local/src/openchange$ make
Linking sample application bin/libmapixx-test
g++ -I.  -O3 -Wall -g3 -fstrict-aliasing -Wp,-D_FORTIFY_SOURCE=2 
-Wl,-rpath,/usr/local/samba/lib -I/usr/local/samba/include
    -I/usr/local/samba/include   -I/usr/local/samba/include   
-I/usr/local/samba/include     -o bin/libmapixx-test 
.11 -Wl,-rpath,/usr/local/samba/lib -L/usr/local/samba/lib -ldcerpc 
-ldcerpc-binding -lndr -lsamba-hostconfig -lsamba-util -ltevent 
-ltalloc   -Wl,-rpath,/usr/local/samb
a/lib -L/usr/local/samba/lib -lldb -ltalloc   
-Wl,-rpath,/usr/local/samba/lib -L/usr/local/samba/lib -ltalloc   -lpthread
/usr/local/samba/lib/ undefined reference to 
`hash_any at SAMBA_4.0.0ALPHA18_GIT_0B3A262'

The hash_any symbol comes from the ccan library and is included in via source3/util/

I suspect there is a symbols collision when you build samba 4 with 
system libs as ldb has its own version of ccan but obviously with a 
different version although it seems that ldb didn't directly need ccan 
(no ccan in the output of ldd, the following command ls 
/usr/local/systemsamba/lib/ldb/* output this:


There is no way to have a system ccan and it seems that there is no easy 
way to use the one built for ldb as the "system" ccan.

I don't know what can be done, the cheapest is to have a source3/util 
not to depend on ccan if --disable-tdb2 was specified on the command line.

Any remarks ?


Matthieu Patou
Samba Team

More information about the samba-technical mailing list