get rid static libraries or fix them



Hallo.

I have just got a bug report saying, that static instances of GNOME
libraries are not useful. I wanted to oppose, so I have tried to link
gnome-hello statically.

It failed and I have discovered many bugs. It seems, that nobody ever
tried to use static libraries, otherwise these bugs would be discovered
many years ago.

So we should find all lower mentioned (and probably many unmentioned)
static issues and fix them or we should disable static libraries for the
whole platform. In current state, it's only a waste of disk space.

What is your opinion?

http://bugzilla.gnome.org/show_bug.cgi?id=405352

gcc -Wall gnome-hello.c -o gnome-hello -static $(pkg-config libgnomeui-2.0 --static --libs ; pkg-config libgnomeui-2.0 --cflags)
/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/bin/ld:
cannot find -lgnome-keyring
collect2: ld returned 1 exit status

gcc -Wall gtk-hello.c -o gtk-hello -static $(pkg-config gtk+-2.0 --static --libs ; pkg-config gtk+-2.0 --cflags)
/usr/lib64/gcc/x86_64-suse-linux/4.1.2/../../../../x86_64-suse-linux/bin/ld:
cannot find -lgtk-x11-2.0
collect2: ld returned 1 exit status

Trying manually it discovered tons of missing dependencies as undefined
symbols. At least these private libraries are missing somewhere (in
braces the most probable candidate):

libesd (libgnome), libaudiofile (libgnome), libXrender (cairo), libxml2
(libfontconfig), libXau (libX11), libXdmcp (libbonobo), libORBitCosNaming-2
(libbonobo), libdbus-1 (libgnome-vfs-2, maybe also libdbus-glib-1).

Packages atk, gtk+, glib, gnome-keyring, pango don't provide any static
libraries - they use AM_DISABLE_STATIC. It implies need for -Wl,-Bstatic
and -Wl,-Bdynamic to static pkgconfig linking options for all references
to libraries from these packages.

And finally it is required to solve fragility of loading:

- gnome-vfs modules from statically linked binaries (probably by disabling of
static linking of gnome-vfs). Following optional private libraries may be
needed for static libgnomevfs-2: libdns_sd or libavahi, libssl or libgnutls.

- GConf backends from statically linked binaries (probably by disabling of
static linking of GConf).

And if we decide to re-enable building of static instances of atk, gtk+,
glib, gnome-keyring, pango, then we also need to find a proper fix for
fragility of loading of gtk modules, pango modules and gmodule stuff.

-- 
Best Regards / S pozdravem,

Stanislav Brabec
software developer
---------------------------------------------------------------------
SUSE LINUX, s. r. o.                          e-mail: sbrabec suse cz
Lihovarská 1060/12                            tel: +420 284 028 966
190 00 Praha 9                                fax: +420 284 028 951
Czech Republic                                http://www.suse.cz/




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