[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#167604: debian-policy: provides the exception of static libraries.



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 <allomber@math.u-bordeaux.fr> wrote:
> 
> 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:
> 
> ---Makefile
> t-static: t.c libfoo.a
> 	gcc -static -export-dynamic -o $@ $< -L. -lfoo -ldl
> 

Wait a minute, -export-dynamic is an option to *ld* not to gcc!
Rewrite this line as 

t-static: t.c libfoo.a
        gcc -Xlinker -export-dynamic -o $@ t.c libfoo.a -L. -ldl
% rm ./t-static; make
% ldd ./t-static
        libdl.so.2 => /lib/libdl.so.2 (0x40019000)
        libc.so.6 => /lib/libc.so.6 (0x4001e000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
% make test
yellowpig% make test
LD_LIBRARY_PATH=. ./t-shared
test.
test.: test.:
LD_LIBRARY_PATH=. ./t-static
test.
test.: test.:

Anyway, if it is a bug in dlopen() or in some Makefile, then it is not a bug
in policy.

Cheers,
Bill



Reply to: