I did more testing, and I still don't really understand what's happening. The closest info I have on this is https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25460, but the g++call made by libtool still seem pretty much the same:

Failing one on Buster:

g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/8/crtbeginS.o .libs/libgeany_la-about.o .libs/libgeany_la-build.o .libs/libgeany_la-callbacks.o .libs/libgeany_la-dialogs.o .libs/libgeany_la-document.o .libs/libgeany_la-editor.o .libs/libgeany_la-encodings.o .libs/libgeany_la-filetypes.o .libs/libgeany_la-geanyentryaction.o .libs/libgeany_la-geanymenubuttonaction.o .libs/libgeany_la-geanyobject.o .libs/libgeany_la-geanywraplabel.o .libs/libgeany_la-highlighting.o .libs/libgeany_la-keybindings.o .libs/libgeany_la-keyfile.o .libs/libgeany_la-log.o .libs/libgeany_la-libmain.o .libs/libgeany_la-msgwindow.o .libs/libgeany_la-navqueue.o .libs/libgeany_la-notebook.o .libs/libgeany_la-plugins.o .libs/libgeany_la-pluginutils.o .libs/libgeany_la-prefs.o .libs/libgeany_la-printing.o .libs/libgeany_la-project.o .libs/libgeany_la-sciwrappers.o .libs/libgeany_la-search.o .libs/libgeany_la-socket.o .libs/libgeany_la-spawn.o .libs/libgeany_la-stash.o .libs/libgeany_la-symbols.o .libs/libgeany_la-templates.o .libs/libgeany_la-toolbar.o .libs/libgeany_la-tools.o .libs/libgeany_la-sidebar.o .libs/libgeany_la-ui_utils.o .libs/libgeany_la-utils.o .libs/libgeany_la-vte.o -Wl,--whole-archive ../scintilla/.libs/liblexilla.a ../scintilla/.libs/libscintilla.a ./tagmanager/.libs/libtagmanager.a -Wl,--no-whole-archive -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -L/usr/lib/gcc/x86_64-linux-gnu/8 -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/8/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/8/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crtn.o -O2 -Wl,--as-needed -Wl,-z -Wl,defs -pthread -pthread -pthread -Wl,-soname -Wl,libgeany.so.0 -o .libs/libgeany.so.0.0.0

Working one Bullseye:

g++ -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/12/crtbeginS.o .libs/libgeany_la-about.o .libs/libgeany_la-build.o .libs/libgeany_la-callbacks.o .libs/libgeany_la-dialogs.o .libs/libgeany_la-document.o .libs/libgeany_la-editor.o .libs/libgeany_la-encodings.o .libs/libgeany_la-filetypes.o .libs/libgeany_la-geanyentryaction.o .libs/libgeany_la-geanymenubuttonaction.o .libs/libgeany_la-geanyobject.o .libs/libgeany_la-geanywraplabel.o .libs/libgeany_la-highlighting.o .libs/libgeany_la-keybindings.o .libs/libgeany_la-keyfile.o .libs/libgeany_la-log.o .libs/libgeany_la-libmain.o .libs/libgeany_la-msgwindow.o .libs/libgeany_la-navqueue.o .libs/libgeany_la-notebook.o .libs/libgeany_la-plugins.o .libs/libgeany_la-pluginutils.o .libs/libgeany_la-prefs.o .libs/libgeany_la-printing.o .libs/libgeany_la-project.o .libs/libgeany_la-sciwrappers.o .libs/libgeany_la-search.o .libs/libgeany_la-socket.o .libs/libgeany_la-spawn.o .libs/libgeany_la-stash.o .libs/libgeany_la-symbols.o .libs/libgeany_la-templates.o .libs/libgeany_la-toolbar.o .libs/libgeany_la-tools.o .libs/libgeany_la-sidebar.o .libs/libgeany_la-ui_utils.o .libs/libgeany_la-utils.o .libs/libgeany_la-vte.o -Wl,--whole-archive ../scintilla/.libs/liblexilla.a ../scintilla/.libs/libscintilla.a ./tagmanager/.libs/libtagmanager.a -Wl,--no-whole-archive -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -L/usr/lib/gcc/x86_64-linux-gnu/12 -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/12/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/12/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/12/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/12/../../../x86_64-linux-gnu/crtn.o -O2 -Wl,--as-needed -Wl,-z -Wl,defs -pthread -Wl,-soname -Wl,libgeany.so.0 -o .libs/libgeany.so.0.0.0

To reproduce a test program, you need to build a shared library using C++ threads with libtool. In this case, you'll get the -nostdlib and friends, and get a link failure unless you pass in -lpthread on my GCC8. This is regardless of the Libtool version it seems (well, 2.4.6 and 2.4.7). I made such a sample test program: https://github.com/b4n/ltcxxthread


Insight I'm taking from this:

In the end, I don't know if this here is OK or not. FWIW, the sample program does not seem to link to libpthread, yet it works. If I add -lpthread it then does link to it -- obviously. However, Geany links to libpthread anyway through GLib -- at least on GNU/Linux.


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <geany/geany/pull/3888/c2143849479@github.com>