Принудительное GCC к статической ссылке, например. pthreads (и не динамическая ссылка)

Моя программа построена как загрузчик и множество модулей, которые являются общими библиотеками. Теперь одна из этих библиотек использует pthreads и, похоже, динамически связана с модулем (загружается при запуске). Теперь было бы проще, если бы я мог заставить pthreads быть связанными в файл модуля. GCC на linux, как мне это сделать? Я предполагаю, что libpthread.a необходим....

Ответ 1

При связывании libpthread.a в общую библиотеку теоретически возможно, это действительно плохая идея. Причина в том, что libpthread является частью glibc, и все части glibc должны точно совпадать, или вы увидите странные и не объяснимые сбои.

Таким образом, привязка libpthread.a к вашей общей библиотеке будет:

  • Причина, по которой ваша программа вылетает при перемещении на машину с другой версией glibc
  • Если ваша текущая программа glibc обновлена, ваша существующая программа будет повреждена, но ваш модуль не будет повторно связан с обновленным libpthread.a.

Затрать себя на обострение и не делать этого.