Re: -Wl,--as-needed considered possibly harmful
On Sun, Dec 09, 2007, Simon Richter wrote:
> If there are broken scripts adding too many libraries then it is time to
> fix those scripts, not employ an evil hack that makes the symptoms go away.
We met actual cases were --as-needed breaks things; however, for pure C
program, I think combining it with "-z defs" should be safe:
LDFLAGS += -Wl,-z,defs -Wl,--as-needed
Sadly, there are many cases where "-z defs" will actually fail the
build, for example when creating Python bindings: these may not be
linked to libpython or to python as they might be loaded from either
one, and you don't want to load the other one (if you run within
python, you don't want to load libpython and vice-versa). In such
cases, -z defs will fail the build because of missing link flags for
the Python symbols.
I heartily agree with other people that fixing the build rules to not
add superfluous link flags is the best thing to do, but this ain't easy
in many cases, and --as-needed might allow us to benefit from shorter
Depends immediately. If fixing the build is too hard and your build
passes with -z defs, then you are probably safe with --as-needed.
NB: -z defs is the same as --no-undefined.