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