This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: -Bstatic & -shared problems / example
At 14:12 16.04.2002, bert hubert wrote:
>On Tue, Apr 16, 2002 at 02:01:54PM +0200, Franz Sirl wrote:
>
> > Why should the linker extract anything at all from these libraries? You
> > listed them in front of your object file! Change the order of your command
> > line.
>
>That commandline works fine - you misunderstand me. But the commandline is
>indeed duplicate.
>
>The reduced question is, why does this work fine:
>
>$ ar x /opt/postgresql/lib/libpq++.a $(ar t /opt/postgresql/lib/libpq++.a)
>$ ar x /opt/postgresql/lib/libpq.a $(ar t /opt/postgresql/lib/libpq.a)
>$ g++ -L/opt/postgresql/lib -lssl -lcrypt
> -lcrypto -Wl,-soname -Wl,libgpsqlbackend.so.0 -shared -o
> libgpgsqlbackend.so *.o
>
>Any why doesn't this:
>
>$ g++ -L/opt/postgresql/lib -lssl -lcrypt -lcrypto -Wl,-Bstatic -lpq++ -lpq
> -Wl,-Bdynamic -Wl,-soname -Wl,libgpsqlbackend.so.0 -shared -o
> libgpgsqlbackend.so pgsqlbackend.o
>
>Because as far as I can see, these should be identical. The difference:
archive != object file for the linker. Again, you have misordered your
command line, there is no object file listed in front of the libraries, so
no need for the linker to extract anything from the libraries cause there
is no consumer (yet). Try:
$ g++ pgsqlbackend.o -L/opt/postgresql/lib -lssl -lcrypt
-lcrypto -Wl,-Bstatic -lpq++ -lpq -Wl,-Bdynamic -Wl,-soname
-Wl,libgpsqlbackend.so.0 -shared -o libgpgsqlbackend.so
BTW, this is quite off-topic here, these are linker basics that have
nothing to do with binutils in particular.
Franz.