[redland-dev] Problems with Tcl interface...
Georgios Petasis
petasis at iit.demokritos.gr
Wed Mar 24 06:46:44 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