On Sat, Nov 16, 2002 at 12:34:43AM +0900, Akira TAGOH wrote: > >>>>> On Fri, 15 Nov 2002 13:27:49 +0100, > >>>>> "BA" == Bill Allombert <[EMAIL PROTECTED]> wrote: > > >> Subject: debian-policy: provides the exception of static libraries. > >> In Libraries section, > >> > >> In general, libraries must have a shared version in the > >> library package and a static version in the development > >> package. > >> > >> But, if libraries uses dlopen(3) internally, then some > >> programs links the static version, it doesn't work > >> correctly. because dlopen(3) doesn't try to resolve the > >> symbols in the static-linked program. in most cases, the > >> static version of such libraries is meaningless to be > >> provided. > > BA> You need to link your executable binary with -export-dynamic: > BA> man ld: > BA> -export-dynamic > BA> When creating an ELF file, add all symbols to the > BA> dynamic symbol table. Normally, the dynamic symbol > BA> table contains only symbols which are used by a dy? > BA> namic object. This option is needed for some uses > BA> of dlopen. > > No, it doesn't help. > try this case:
<snip>
You need the following patch to Makefile to fix this:
--- Makefile~ 2002-11-17 05:26:45.000000000 +0000
+++ Makefile 2002-11-17 05:31:02.000000000 +0000
@@ -22,7 +22,7 @@
gcc -rdynamic -ldl -L. -lfoo -o $@ $<
t-static: t.c libfoo.a
- gcc -static -export-dynamic -o $@ $< -L. -lfoo -ldl
+ gcc -export-dynamic -o $@ $< -L. -Wl,-Bstatic -lfoo -ldl -Wl,-Bdynamic
clean:
rm -f libfoo.so libfoo.a *.o t-shared t-static module.so
-export-dynamic does no good if you linked a static object; you want a
dynamic object with libfoo linked statically.
--
.''`. ** Debian GNU/Linux ** | Andrew Suffield
: :' : http://www.debian.org/ | Dept. of Computing,
`. `' | Imperial College,
`- -><- | London, UK
pgpbtkoXXKcIO.pgp
Description: PGP signature

