Re: to many libraries linked.



On Mon, Jun 11, 2007 at 08:57:21AM -0500, Matt Hoosier wrote:
> On 6/11/07, Paul Elliott <pelliott io com> wrote:
> >The sponsor of peless to debian complains that peless
> >links to too many libraries that it does not strictly
> >speaking need:
> >
> >g++  -g -O2   -o peless -L/usr/lib peless-peless.o peless-gmore.o
> >+peless-search.o -pthread -L/opt/gnome/lib -lgtkmm-2.4 -lgdkmm-2.4 
> >-latkmm-1.6
> >+-lgtk-x11-2.0 -lpangomm-1.4 -lcairomm-1.0 -lgdk-x11-2.0 -latk-1.0
> >+-lgdk_pixbuf-2.0 -lpangocairo-1.0 -lpango-1.0 -lcairo -lfreetype -lz
> >+-lfontconfig -lexpat -lglitz -lpng12 -lXrender -lX11 -lpthread -lXau 
> >-lXdmcp
> >+-lgconfmm-2.6 -lglibmm-2.4 -lgconf-2 -lgobject-2.0 -lsigc-2.0 -lORBit-2 
> >-lm
> >+-lgmodule-2.0 -ldl -lgthread-2.0 -lglib-2.0    -lboost_filesystem 
> >-lboost_regex
> >
> >
> >gtkmm2.4 gconfmm-2.6 and boost* I have specified directly.
> >
> >the others are a result of these
> >configure.ac:
> >PKG_CHECK_MODULES(DEPS, gtkmm-2.4 >= 2.4.0 gconfmm-2.6 >= 2.6.0)
> >and this line from Makefile.am
> >peless_LDADD=$(DEPS_LIBS)  $(BOOST_FILESYSTEM_LIB) $(BOOST_REGEX_LIB)
> >Specificyly $(DEPS_LIBS).
> >
> >16 of the libraries are said to be not really needed.
> 
> Can you be more specific? As I look through the list of libs specified
> on your command line, I can think of at least one spot in Gtk+ or
> gtkmm that uses every one of those. What does "not needed" mean?
> 
 
Well if I build using CXXFLAGS='-Xlinker --as-needed'
the resulting executable works. But if I do a
objdump -p peless | grep NEEDED

both before and after adding the above option, and do a diff -c
on the results, this is what I get:

*** peless.odd	2007-06-11 11:42:42.000000000 -0500
--- aspeless.odd	2007-06-11 11:43:01.000000000 -0500
***************
*** 1,39 ****
    NEEDED      libgtkmm-2.4.so.1
-   NEEDED      libgdkmm-2.4.so.1
    NEEDED      libatkmm-1.6.so.1
-   NEEDED      libgtk-x11-2.0.so.0
    NEEDED      libpangomm-1.4.so.1
-   NEEDED      libcairomm-1.0.so.1
-   NEEDED      libgdk-x11-2.0.so.0
-   NEEDED      libatk-1.0.so.0
-   NEEDED      libgdk_pixbuf-2.0.so.0
-   NEEDED      libpangocairo-1.0.so.0
-   NEEDED      libpango-1.0.so.0
-   NEEDED      libcairo.so.2
-   NEEDED      libfreetype.so.6
-   NEEDED      libz.so.1
-   NEEDED      libfontconfig.so.1
-   NEEDED      libexpat.so.1
-   NEEDED      libglitz.so.1
-   NEEDED      libpng12.so.0
-   NEEDED      libXrender.so.1
-   NEEDED      libX11.so.6
    NEEDED      libpthread.so.0
-   NEEDED      libXau.so.6
-   NEEDED      libXdmcp.so.6
    NEEDED      libgconfmm-2.6.so.1
    NEEDED      libglibmm-2.4.so.1
-   NEEDED      libgconf-2.so.4
-   NEEDED      libgobject-2.0.so.0
    NEEDED      libsigc-2.0.so.0
-   NEEDED      libORBit-2.so.0
-   NEEDED      libgmodule-2.0.so.0
-   NEEDED      libdl.so.2
-   NEEDED      libgthread-2.0.so.0
    NEEDED      libglib-2.0.so.0
    NEEDED      libboost_filesystem.so.1.33.1
    NEEDED      libboost_regex.so.1.33.1
    NEEDED      libstdc++.so.6
-   NEEDED      libm.so.6
    NEEDED      libgcc_s.so.1
    NEEDED      libc.so.6
--- 1,13 ----

People are telling me this means that there are a lot of libraries
that peless is linking to, but is not actually using.

> >
> >It is suggested that peless add --as-needed to LDFLAGS.
> >
> >Is this a good idea? The PKG_CHECK_MODULES is the recommended
> >way to build a program using gtkmm and gconfmm.
> >
> >Suggestions Welcome.
> >

-- 
Paul Elliott                       1(512)837-1096
pelliott io com                    PMB 181, 11900 Metric Blvd Suite J
http://www.io.com/~pelliott/pme/   Austin TX 78758-3117

Attachment: pgpd6A0mrOFsr.pgp
Description: PGP signature



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