Разница между-pthread и-lpthread при компиляции



в чем разница между gcc -pthread и gcc -lpthread который используется при компиляции многопоточных программ?

568   2  

2 ответов:

-pthread указывает компилятору связать в библиотеке pthread, а также настроить компиляцию для потоков.

например, ниже показаны макросы, которые определяются при -pthread опция используется в пакете GCC, установленном на моей машине Ubuntu:

$ gcc -pthread -E -dM test.c > dm.pthread.txt
$ gcc          -E -dM test.c > dm.nopthread.txt
$ diff dm.pthread.txt dm.nopthread.txt 
152d151
< #define _REENTRANT 1
208d206
< #define __USE_REENTRANT 1

С помощью -lpthread опция только заставляет библиотеку pthread быть связанной-предопределенные макросы не определяются.

итог: вы должны использовать -pthread выбор.


Примечание:-pthread параметр задокументирован как параметр для конкретной платформы в документах GCC, поэтому он не всегда может быть доступен. Однако он доступен на платформах, для которых документы GCC явно не перечисляют его (например, i386 и x86-64) - вы должны использовать его, когда он доступен.

также обратите внимание, что другие подобные параметры были использованы GCC, такие как -pthreads (указан как синоним для -pthread на Солярисе 2) и -mthread (для MinGW-специфического потока поддержка на i386 и x86-64 Windows). Я понимаю, что GCC пытается перейти к использованию -pthread равномерно продвигаясь вперед.

-pthread добавлена поддержка многопоточности с библиотекой pthreads. Этот параметр устанавливает флаги как для препроцессора, так и для компоновщика (man gcc).

пока

-lpthread появляется при связывании не будет никакого влияния при предварительной обработке.

Comments

    Ничего не найдено.