swesterfeld / spectmorph

SpectMorph: spectral audio morphing
http://www.spectmorph.org
GNU Lesser General Public License v2.1
64 stars 5 forks source link

Overlinking issues #7

Closed dvzrv closed 1 year ago

dvzrv commented 4 years ago

It seems, that spectmorph is overlinking its components.

During packaging for Arch Linux, I run namcap on the resulting package and it warns about some unused shared libraries:

spectmorph W: Unused shared library '/usr/lib/libpthread.so.0' by file ('usr/bin/smstrip')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/libspectmorph.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/libspectmorph.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/libspectmorph.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/libspectmorphglui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/libspectmorphglui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/libspectmorphglui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/libspectmorphgui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/libspectmorphgui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/libspectmorphgui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libglib-2.0.so.0' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libm.so.6' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libm.so.6' by file ('usr/lib/lv2/spectmorph.lv2/spectmorph_lv2.so')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/vst/spectmorph_vst.so')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/vst/spectmorph_vst.so')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/vst/spectmorph_vst.so')
spectmorph W: Unused shared library '/usr/lib/libglib-2.0.so.0' by file ('usr/lib/vst/spectmorph_vst.so')
spectmorph W: Unused shared library '/usr/lib/libm.so.6' by file ('usr/lib/vst/spectmorph_vst.so')
swesterfeld commented 4 years ago

Ok, I was able to reduce this to

spectmorph W: Unused shared library '/usr/lib/libpthread.so.0' by file ('usr/bin/smstrip')
spectmorph W: Unused shared library '/usr/lib/libm.so.6' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libm.so.6' by file ('usr/lib/lv2/spectmorph.lv2/spectmorph_lv2.so')
spectmorph W: Unused shared library '/usr/lib/libm.so.6' by file ('usr/lib/vst/spectmorph_vst.so')

by ac3655c2290a00a9d2c1983dfebb2f769871a673 and 5a10c48e1e18ff286ca7bd26e6b312c90c78e319

I don't really know what to do for the remaining libs. I think these are not explicitely listed in Makefile.am, but added automatically.

dvzrv commented 1 year ago

For posterity: The overlinking issues happened because of libtool being libtool... When patching the created libtool file during build, the overlinking dissappears.

sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool

My recommendation would be using a more sane build system (e.g. meson) in the future.