On Thu, Mar 18, 2010 at 12:59 PM, Mark Bucciarelli <mkb...@gmail.com> wrote: > > How do I get the symbolic links generated > from .so.<version> to .so? >
What I've learned: * If my test code is right (see below), dlopen("libbat.so") and dlopen("/usr/local/lib/libbat.so.1.34") do the same thing on OpenBSD. * library_names_spec determines what symbolic links libtool makes, and OpenBSD and Linux have different values for this variable. * a similar topic came up on this list five years ago [1] So, it seems to me the correct approach is to patch monetdb to skip the call to open() and let dlopen() do it's thing. Does this make sense? (Dynamic loading is new to me.) I'll ping upstream to ask why they call open() before calling dlopen(). I can't think of what value it adds. Thanks, m [1] http://www.mail-archive.com/ports@openbsd.org/msg02600.html #include <dlfcn.h> #include <stdio.h> int main(void) { void *handle; char *fns[] = { "libbat.so", "/usr/local/lib/libbat.so.1.34", "libbat.so.1.34", "libbat.so.1", 0 }; char **fn; for (fn = fns; *fn; fn++) { fprintf(stderr, "handle = %p for %s\n", dlopen(*fn, RTLD_NOW), *fn); dlclose(handle); } return 0; }