Значение-pthread отмечает при компиляции

В различном многопоточном C и проектах C++ я видел -pthread флаг относился и к компиляции и к соединению этапа, в то время как другие не используют его вообще и просто передают -lpthread к связывающемуся этапу.

Есть ли любая опасность, не компилирующая и связывающаяся с -pthread флаг - т.е. что делает -pthread на самом деле? Я, прежде всего, интересуюсь платформами Linux.

137
задан jww 31 August 2017 в 14:00
поделиться

2 ответа

Попробуйте:

gcc -dumpspecs | grep pthread

и ищите что-нибудь, что начинается с %{pthread:.

На моем компьютере это приводит к тому, что файлы компилируются с -D_REENTRANT и связываются с -lpthread. На других платформах это может отличаться. Для большинства переносимых платформ используйте -pthread.

Использование _REENTRANT в GNU libc меняет способ работы некоторых заголовков libc. В качестве конкретного примера, это заставляет errno вызывать функцию, возвращающую локальное расположение потока.

104
ответ дан 23 November 2019 в 23:35
поделиться

Из MAN GCC :

-PTHREAD Добавляет поддержку многопотативных с помощью Pthreads библиотека. Этот Опция устанавливает флаги как для препроцессора, так и для линкера.

37
ответ дан 23 November 2019 в 23:35
поделиться