LD Changes To Implicit DSO Linking Update

Enrico Scholz enrico.scholz at informatik.tu-chemnitz.de
Tue Feb 16 16:03:24 UTC 2010


Gerd Hoffmann <kraxel at redhat.com> writes:

> Well.  Even pretty fundamental GNOME stuff like gtk2-devel is still 
> broken.  Look here:
>
> [root at localhost ~]# pkg-config --libs gtk+-2.0
> -pthread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 
> -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype 
> -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lglib-2.0

Are all these libraries really required?  Putting them into a linker line
causes a huge overlinking adding lots of unneeded direct dependencies to
rpm packages.


> -lX11 is missing (at least, maybe more).

That's the problem with the current DSO change :( It causes packagers or
upstream developers to define typical use cases (e.g. when somebody
calls 'mylib_foo(otherlib_struct *)' he calls usually
'otherlib_init(otherlib_struct *)', so that '-lotherlib' is usually
needed).

Such soft decisions are far away from being reliable and to work for
everybody...


I ended up for 'xmlrpc-c' to replace .so symlinks by linker scripts with

| INPUT(<main-lib> AS_NEEDED(<dep-libs>+))

commands.  The <dep-libs> list is created by extracting recursively the
NEEDED libs from <main-lib>.

Not very nice but probably to only way to cope with '--no-add-needed' :(



Enrico


More information about the devel mailing list