This is the mail archive of the guile@cygnus.com mailing list for the guile project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
I have put a spiffy version of guile-dblib out on http://idt.net/~mcmanus that uses autoconf and libtool. If you're interested, please take a look and let me know if it looks, or better yet, works OK. There is one remaining problem I'm having with libtool, that I haven't been able to resolve. If no one on this list is able to help me with it, I'll send a message to libtool-bug, asking for help, in a day or two. Thanks, -russ Here is the README file from the distribution: This directory of code is used to build software to enable access to Sybase through the dblib library. This is still beta software, because I haven't figured out how to portably build shared libraries with libtool yet. More about this later. This work is copyright protected under the GNU General Public License. Please see the file COPYING which will tell you in more detail about the copyright restrictions on this work. I've added support for two to non-inuitive configure features. The first of these is called 'dblib', and you can use it to specify where your dblib installation is at. The second of these is called simply 'guile', and it is used similarly, to specify where you have guile installed. If you've got guile installed in /usr/local, and /usr/local is in your path, then you shouldn't need this to build. To build in my installation, I configured like this: ./configure --enable-guile=/opt/guile --enable-dblib=/opt/sybase As I hinted at above, I have not been able to figure out how to get libtool to build shared libraries the way that I expect on my Solaris machine. I am trying to produce a .so file that records that fact that it is in turn dependent on libsybdb.so. When this is done, dlopen() on the .so file should also cause libsybdb.so to be loaded. The command that I'm using to build the .so is this (lines wrapped with backslash): $(LIBTOOL) --mode=link $(CC) -export-dynamic -o $@ \ $(srcdir)/dblib_glue.lo \ -rpath $(GUILE_DIR)/share/guile/site/database/sybase \ $(LDFLAGS) $(LIBS) which expands out to: /home/mcmanr/local/bin/libtool --mode=link gcc -export-dynamic \ -o libdblib.la ./dblib_glue.lo \ -rpath /opt/guile/share/guile/site/database/sybase \ -L/opt/guile/lib -L/opt/sybase/lib -lguile -lqthreads -lsybdb \ -lsocket -lnsl -lc -lm >From this, libtool generates the following sequence of commands: rm -f .libs/libdblib.la .libs/libdblib.* .libs/libdblib.* /usr/ccs/bin/ld -G -h libdblib.so.0 -o .libs/libdblib.so.0.0.0 ./dblib_glue.lo (cd .libs && ln -s libdblib.so.0.0.0 libdblib.so.0) (cd .libs && ln -s libdblib.so.0.0.0 libdblib.so) ar cru .libs/libdblib.a ./dblib_glue.o ranlib .libs/libdblib.a creating libdblib.la (cd .libs && ln -s ../libdblib.la libdblib.la) I'm obviously missing something about how to instruct libtool to do what I think should be done. To concretely illustrate what I think should be done, I was able to build the shared library with the following command, that did what I thought was right: /usr/ccs/bin/ld -G -h libdblib.so.0 -o .libs/libdblib.so.0.0.0 \ ./dblib_glue.lo -L/opt/sybase/lib -R/opt/sybase/lib -lsybdb I don't know how to get libtool to do this, as soon as I figure it out, I'll be in business. Or maybe my whole understanding of shared libraries is cock-eyed, and I need an attitude adjustment. -russ (russell.mcmanus@gs.com) -- My mailer limits .sigs files to 2 lines. But ingeniously I bypassed this by