Force GCC to static-link e.g. pthreads (and not dynamic link)
12,992
While linking libpthread.a
into a shared library is theoretically possible, it is a really bad idea. The reason is that libpthread
is part of glibc
, and all parts of glibc
must match exactly, or you'll see strange and un-explainable crashes.
So linking libpthread.a
into your shared library will:
- Cause your program to crash when moved to a machine with a different version of
glibc
- Cause your existing program to crash when your current machine's
glibc
is upgraded, but your module is not re-linked against updatedlibpthread.a
.
Spare yourself aggravation, and don't do that.
Comments
-
imacake almost 2 years
My program is built as a loader and many modules which are shared libraries. Now one of those libraries uses pthreads and it seems its bound to the module dynamically (loaded on startup). Now it'd be simplier if i could force pthreads to be linked into the module file. GCC on linux, how do i do? I guess a libpthread.a is necessary....