Today I was preparing a new package for Debian, pinot, a Xapian (and other engines) based full-text search engine, when I noticed of the real difference in generated dependencies passing -Wl,--as-needed to the linker (via LDFLAGS) or not. Here it is a table which summarizes the result:
| LDFLAGS="" | LDFLAGS="-Wl,--as-needed" |
|---|---|
| libatk1.0-0 (>= 1.20.0) | |
| libc6 (>= 2.7-1) | libc6 (>= 2.7-1) |
| libcairo2 (>= 1.4.0) | |
| libcairomm-1.0-1 (>= 1.4.0) | |
| libcomerr2 (>= 1.33-3) | |
| libcurl3 (>= 7.16.2-1) | libcurl3 (>= 7.16.2-1) |
| libdbus-1-3 (>= 1.1.1) | libdbus-1-3 (>= 1.1.1) |
| libdbus-glib-1-2 (>= 0.74) | libdbus-glib-1-2 (>= 0.74) |
| libfontconfig1 (>= 2.4.0) | |
| libfreetype6 (>= 2.3.5) | |
| libgcc1 (>= 1:4.1.1-21) | libgcc1 (>= 1:4.1.1-21) |
| libglib2.0-0 (>= 2.12.0) | libglib2.0-0 (>= 2.12.0) |
| libglibmm-2.4-1c2a (>= 2.14.0) | libglibmm-2.4-1c2a (>= 2.14.0) |
| libgmime-2.0-2 | libgmime-2.0-2 |
| libgtk2.0-0 (>= 2.12.0) | libgtk2.0-0 (>= 2.12.0) |
| libgtkmm-2.4-1c2a (>= 2.12.0) | libgtkmm-2.4-1c2a (>= 2.12.0) |
| libidn11 (>= 0.5.18) | |
| libkrb53 (>= 1.6.dfsg.2) | |
| libldap-2.4-2 (>= 2.4.7) | |
| libpango1.0-0 (>= 1.19.3) | |
| libpng12-0 (>= 1.2.13-4) | |
| libsigc++-2.0-0c2a (>= 2.0.2) | libsigc++-2.0-0c2a (>= 2.0.2) |
| libsqlite3-0 (>= 3.5.4) | libsqlite3-0 (>= 3.5.4) |
| libssh2-1 | |
| libssl0.9.8 (>= 0.9.8f-5) | libssl0.9.8 (>= 0.9.8f-5) |
| libstdc++6 (>= 4.2.1-4) | libstdc++6 (>= 4.2.1-4) |
| libtag1c2a (>= 1.4) | libtag1c2a (>= 1.4) |
| libtextcat0 | libtextcat0 |
| libx11-6 | |
| libxapian15 | libxapian15 |
| libxml++2.6-2 (>= 2.20.0) | libxml++2.6-2 (>= 2.20.0) |
| libxml2 (>= 2.6.27) | libxml2 (>= 2.6.27) |
| libxrender1 | |
| zlib1g | zlib1g |
| 34 | 20 |
We removed 14 useless dependencies!