Значение флага -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. Эта опция устанавливает флаги для препроцессора и компоновщика.

Другие вопросы по тегам