ccan dependencies seems to break external projects
mat at samba.org
Sat Feb 11 15:49:20 MST 2012
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:
Linking sample application bin/libmapixx-test
g++ -I. -O3 -Wall -g3 -fstrict-aliasing -Wp,-D_FORTIFY_SOURCE=2
-I/usr/local/samba/include -o bin/libmapixx-test
libmapi++/tests/test.cpp libmapipp.so.0.11 libmapi.so.0
.11 -Wl,-rpath,/usr/local/samba/lib -L/usr/local/samba/lib -ldcerpc
-ldcerpc-binding -lndr -lsamba-hostconfig -lsamba-util -ltevent
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/libsmbconf.so.0: 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
libsmbconf.so 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 libldb.so), the following command ls
/usr/local/systemsamba/lib/ldb/libccan.so.0* 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 ?
More information about the samba-technical