Значение флага -pthread при компиляции
В различных многопоточных проектах C и C++ я видел -pthread
флаг применяется как на этапе компиляции, так и на этапе компоновки, в то время как другие его вообще не используют и просто передают -lpthread
на стадии связывания.
Есть ли опасность не компилировать и связывать с -pthread
флаг - т.е. что делает -pthread
на самом деле делать? Меня в первую очередь интересуют платформы Linux.
2 ответа
Пытаться:
gcc -dumpspecs | grep pthread
и искать все, что начинается с %{pthread:
,
На моем компьютере это приводит к компиляции файлов с -D_REENTRANT
и связано с -lpthread
, На других платформах это может отличаться. использование -pthread
для большей мобильности.
С помощью _REENTRANT
в GNU libc изменяет работу некоторых заголовков libc. В качестве конкретного примера, это делает errno
вызвать функцию, возвращающую локальное местоположение потока.
От man gcc
:
-pthread Adds support for multithreading with the pthreads library. Эта опция устанавливает флаги для препроцессора и компоновщика.