Calling shared libs from static libs
Russell Shaw
rjshaw@iprimus.com.au
Thu Oct 2 07:47:00 GMT 2003
Russell Shaw wrote:
> Michael Matz wrote:
>
>> Hi,
>>
>> On Wed, 1 Oct 2003, Russell Shaw wrote:
>>
>>
>>> ld -o shapegen -static /usr/lib/gcrt1.o main.o gui.o xmalloc.o
>>> object.o menu.o dialog.o
>>> -L /usr/X11R6/lib
>>> -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm
>>> -lpangoxft-1.0
>>> -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
>>> -lc /usr/lib/gcc-lib/i386-linux/3.3.1/libgcc.a
>>
>>
>> You of course have to link against the necessary libraries. -lX11 to
>> start with.
>
> Thanks. I got it to compile as a mixture of static and dynamic:
>
> gcc -g -O0 -o shapegen main.o gui.o xmalloc.o object.o menu.o dialog.o
> -Wl,/usr/lib/libgtk-x11-2.0.a /usr/lib/libgdk-x11-2.0.a -latk-1.0
> -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0
> -lgmodule-2.0 -ldl /usr/lib/libglib-2.0.a /usr/lib/libgobject-2.0.a
> -L /usr/X11R6/lib -lXinerama -lXi
> -lc
>
> It seems that static .a libraries can only be found by using the explicit
> path if you are linking a mixture of static and dynamic libraries, because
> specifying -static anywhere in the linker options seems to make
> *everything*
> static even if you have -Bdynamic for some libraries (gcc 3.3.1, ld
> 2.14.90.0.4).
>
> Is this a bug, or should -static apply globally?
I think i found the problem. I assumed that anything starting with "-"
after -Wl was passed to the linker. However, i think everything needs
commas. This works now:
gcc -g -O0 -o shapegen main.o gui.o xmalloc.o object.o menu.o dialog.o
-Wl,-Bstatic,
-lgtk-x11-2.0,-lgdk-x11-2.0,-latk-1.0,-lgdk_pixbuf-2.0,-ltiff,-lpng,
-lpangoxft-1.0,-lpangox-1.0,-lpango-1.0,-lgmodule-2.0,-lgobject-2.0,
-lglib-2.0,
-Bdynamic,-lfreetype,-lfontconfig,-ljpeg,-ldl,
-L/usr/X11R6/lib,-lXinerama,-lXi,-lXft,-lm,-lc
More information about the Binutils
mailing list