https://sourceware.org/bugzilla/show_bug.cgi?id=32816
--- Comment #2 from Aliaksey Kandratsenka <alkondratenko at gmail dot com> ---
As noted above, I have tried --no-as-needed. And yes it kinda "works", but it
is not great.
There several imperfections with --no-as-needed:
*) automake stuff insists on having only -lfoobar (and maybe -L) in PROG_LIBADD
variable. I.e. cannot wrap -Wl,--push-state,--as-needed -Wl,--pop-state around
my -lprofiler thing. I can and currently do this in LDFLAGS but this mentions
-lprofiler "too early" in libprofiler is static library. I.e. LDFLAGS are
passed early in linking command and LIBADD is appended (which kinda makes sense
in general).
*) --as-needed is insufficient for the static library case
*) I am not 100% sold on the wisdom of distros defaulting to --as-needed, but
they do. And me asking users of my library to disable it is not perfect.
My current workaround is to do both
AM_LDFLAGS = -Wl,--push-state,--no-as-needed \
$(cpuprofiler_LIBS) \
-Wl,--pop-state -Wl,-uProfilerStart
and
trigram_index_LDADD = $(tcmalloc_LIBS) $(cpuprofiler_LIBS)
So kinda mentioning -lprofiler twice, once for ".so" case via --no-as-needed
and once for the ".a" case via -Wl,-u and -lprofiler at the end of linking
command line.
So ideally, we'd have --undefined flag equally working across shared and static
libraries and have everything nice and logical.
--
You are receiving this mail because:
You are on the CC list for the bug.