Force GCC à établir un lien statique, par exemple pthreads (et non un lien dynamic)

Mon programme est conçu comme un chargeur et de nombreux modules qui sont des bibliothèques partagées. Maintenant, l’une de ces bibliothèques utilise pthreads et semble liée au module de manière dynamic (chargée au démarrage). Maintenant, ce serait plus simple si je pouvais forcer les liens vers le fichier de module. GCC sous Linux, comment faire? Je suppose qu’un libpthread.a est nécessaire ….

Bien que la liaison de libpthread.a dans une bibliothèque partagée soit théoriquement possible, c’est une très mauvaise idée . La raison en est que libpthread fait partie de la glibc , et que toutes les parties de la glibc doivent correspondre exactement ou que vous voyez des pannes étranges et inexplicables.

Ainsi, lier libpthread.a dans votre bibliothèque partagée:

  1. Faire planter votre programme lorsqu’il est déplacé sur une machine avec une version différente de glibc
  2. Faites planter votre programme existant lorsque la glibc de votre machine actuelle est mise à niveau, mais votre module n’est pas lié à nouveau avec libpthread.a .

Epargnez-vous l’aggravation et ne faites pas cela.