[redland-dev] Problems with Tcl interface...

George Petasis petasis at iit.demokritos.gr
Sat Mar 20 19:01:26 GMT 2004


Dear sirs,

I am trying to use the redland package, initially from its
Tcl interface. However, something is wrong with the dynamic
library. In my system (fedora core 1), the following commands
where perfomed to produce the shared library:

gcc -DHAVE_CONFIG_H  -I..    -DLIBRDF_INTERNAL=1 -g  -fPIC -DPIC 
-I../librdf -I/disk2b/local/include -DUSE_TCL_STUBS Redland_wrap.c -c -o 
Redland_wrap.so
gcc -DLIBRDF_INTERNAL=1 -g -shared Redland_wrap.so -L/disk2b/local/lib 
-ltclstub8.5 
-L/disk2b/local/sources/Development/XML/redland-0.9.16/librdf/.libs 
-lrdf -lcrypto -ldb-4.1 -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl 
-lm -L/disk2b/local/sources/Development/XML/redland-0.9.16/raptor/.libs 
-lraptor -lcurl -L/usr/kerberos/lib -lssl -lcrypto -lgssapi_krb5 -lkrb5 
-lcom_err -lk5crypto -lresolv -ldl -lz -L/usr/kerberos/lib -lz -lssl 
-lcrypto -lssl -lcrypto -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto 
-lresolv -ldl -lz -lz -L/usr/lib -lxml2 -lz -lpthread -lm -lglib-2.0 -o 
Redland.so
if test `uname` = Darwin; then \
  /usr/bin/install -c Redland.so Redland.dylib; \
fi
touch Redland-stamp

First of all, the compilation define USE_TCL_STUBS was added by me. Is 
there any particularly
reason its not defined by default? The idea is that you define this 
symbol, and you link
with tclstub<version> instead tcl<version> and you get a shared library 
that can work in
almost all tcl versions. I think such support should exist by default :-)

However, the produced shared library cannot be loaded from tcl, due to 
undefined symbols.
Ldd reports on this:

ldd -d Redland.so
        librdf.so.0 => not found
        libcrypto.so.4 => /lib/libcrypto.so.4 (0x0099e000)
        libdb-4.1.so => /usr/lib/tls/libdb-4.1.so (0x00111000)
        libmysqlclient.so.10 => /usr/lib/mysql/libmysqlclient.so.10 
(0x002ce000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00712000)
        libcrypt.so.1 => /lib/libcrypt.so.1 (0x0041f000)
        libnsl.so.1 => /lib/libnsl.so.1 (0x00fd8000)
        libm.so.6 => /lib/tls/libm.so.6 (0x00384000)
        libraptor.so.1 => not found
        libcurl.so.2 => /usr/lib/libcurl.so.2 (0x001d2000)
        libssl.so.4 => /lib/libssl.so.4 (0x001fb000)
        libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00230000)
        libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00243000)
        libcom_err.so.2 => /lib/libcom_err.so.2 (0x00e11000)
        libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00338000)
        libresolv.so.2 => /lib/libresolv.so.2 (0x00530000)
        libdl.so.2 => /lib/libdl.so.2 (0x002aa000)
        libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00542000)
        libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00b3f000)
        libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x003a6000)
        libc.so.6 => /lib/tls/libc.so.6 (0x00723000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x0035d000)
undefined symbol: librdf_version_string (./Redland.so)
undefined symbol: librdf_version_minor  (./Redland.so)
undefined symbol: librdf_version_decimal        (./Redland.so)
undefined symbol: librdf_version_release        (./Redland.so)
undefined symbol: librdf_copyright_string       (./Redland.so)
undefined symbol: librdf_version_major  (./Redland.so)
undefined symbol: librdf_short_copyright_string (./Redland.so)

The library was created by:
gcc -shared  .libs/rdf_init.o .libs/rdf_uri.o .libs/rdf_node.o 
.libs/rdf_statement.o .libs/rdf_digest.o .libs/rdf_hash.o 
.libs/rdf_hash_cursor.o .libs/rdf_hash_memory.o .libs/rdf_model.o 
.libs/rdf_model_storage.o .libs/rdf_iterator.o .libs/rdf_concepts.o 
.libs/rdf_list.o .libs/rdf_storage.o .libs/rdf_storage_list.o 
.libs/rdf_storage_hashes.o .libs/rdf_storage_file.o .libs/rdf_stream.o 
.libs/rdf_parser.o .libs/rdf_heuristics.o .libs/rdf_files.o 
.libs/rdf_utf8.o .libs/rdf_query.o .libs/rdf_query_triples.o 
.libs/rdf_serializer.o .libs/rdf_serializer_raptor.o 
.libs/rdf_serializer_rdfxml.o .libs/rdf_digest_openssl.o 
.libs/rdf_hash_bdb.o .libs/rdf_parser_raptor.o 
.libs/rdf_storage_mysql.o  -Wl,--rpath 
-Wl,/disk2b/local/sources/Development/XML/redland-0.9.16/raptor/.libs 
-Wl,--rpath -Wl,/disk2b/local/redland/lib -L/usr/lib -L/usr/kerberos/lib 
-lcrypto /usr/lib/libdb-4.1.so -L/usr/lib/mysql -lmysqlclient -lz 
-lcrypt -lnsl -lm ../raptor/.libs/libraptor.so  -Wl,-soname 
-Wl,librdf.so.0 -o .libs/librdf.so.0.0.0

ar cru .libs/librdf.a  rdf_init.o rdf_uri.o rdf_node.o rdf_statement.o 
rdf_digest.o rdf_hash.o rdf_hash_cursor.o rdf_hash_memory.o rdf_model.o 
rdf_model_storage.o rdf_iterator.o rdf_concepts.o rdf_list.o 
rdf_storage.o rdf_storage_list.o rdf_storage_hashes.o rdf_storage_file.o 
rdf_stream.o rdf_parser.o rdf_heuristics.o rdf_files.o rdf_utf8.o 
rdf_query.o rdf_query_triples.o rdf_serializer.o rdf_serializer_raptor.o 
rdf_serializer_rdfxml.o rdf_digest_openssl.o rdf_hash_bdb.o 
rdf_parser_raptor.o rdf_storage_mysql.o
ranlib .libs/librdf.a
creating librdf.la

which seems quite right. Any ideas?
(The symbols exist in .libs/rdf_init.o but not in the library?)

Regards,

George Petasis




More information about the redland-dev mailing list