2016-09-30 2 views
0

У меня есть чертовски время, отслеживая документацию для всех опций gcc. Я нахожусь на машине ubuntu, поэтому даже не уверен, что это относится ко мне.Что означает gcc -pthread?

приходит из этого правила макияжа:

my-server: my-server.c 
    $(CC) -Wall -pthread my-server.c -o my-server 

Я нашел это резюме вариант: https://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Option-Summary.html

ответ

3

От man gcc

-pthread

Добавлена ​​поддержка многопоточности с использованием POSIX Threads библиотеки. Эта опция устанавливает флаги как для препроцессора, так и для компоновщика. Это не влияет на безопасность потока объектного кода, созданного компилятором или библиотеки, поставляемые вместе с ним. Это специальные флаги HP-UX.

Обратите внимание, что он отличается от -lpthread. Опция -lpthread не устанавливает флаги препроцессора. Например, макросы _REENTRANT и __USE_REENTRANT и т. Д.

1

В документации по GCC (6.2.0), он рассматривается как платформа конкретных вариант. В отношении RS6000 and PowerPC он гласит:

  • -pthread.
    Добавляет поддержку многопоточности с помощью библиотеки pthreads. Эта опция устанавливает флаги как для препроцессора, так и для компоновщика.

Для Solaris 2, он говорит:

  • -pthreads.
    Добавить поддержку многопоточности с использованием библиотеки потоков POSIX. Эта опция устанавливает флаги как для препроцессора, так и для компоновщика. Этот параметр не влияет на безопасность потока объектного кода, созданного компилятором или библиотеки, поставляемой вместе с ним.
  • -pthread.
    Это синоним для -pthreads.

Общая «нить» (извините - не удержалась) заключается в том, что она обеспечивает компиляцию и привязку кода к параметрам, которые обеспечивают использование библиотеки потоков POSIX. То же самое можно сказать и на других платформах, где эта опция работает (Linux, macOS Sierra, Mac OS X до нее ...), она будет связываться с правой библиотекой и включать любые соответствующие параметры препроцессора.

можно сравнить вывод:

gcc -v -pthread -o x1 pthread-prog.c 
gcc -v.   -o x2 pthread-prog.c 

, чтобы увидеть, какие различия вариант -pthread делает. На macOS Sierra он добавляет -D_REENTRANT в фазу cc1 и -pthread в настройку «COLLECT_GCC_OPTIONS».

Смежные вопросы