멀티 스레드 프로그램을 컴파일하는 동안 사용되는 gcc -pthread
과 gcc -lpthread
의 차이점은 무엇입니까?컴파일 중 -pthread와 -lpthread의 차이점
73
A
답변
87
-pthread
은 스레드에 대한 컴파일을 구성 할뿐만 아니라 pthread 라이브러리에서 링크하도록 컴파일러에 지시합니다.
$ 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
옵션이 내 우분투 시스템에 설치되어 GCC 패키지에 사용됩니다 때 정의받을 매크로를 보여줍니다 - 사전 정의 된 매크로가 정의되지 않습니다.
최종선 : -pthread
옵션을 사용해야합니다.
참고 : -pthread
옵션은 GCC의 문서에서 특정 플랫폼 옵션으로 설명되어 있습니다, 그래서 항상 사용하지 못할 수 있습니다. 그러나 GCC 문서가 명시 적으로 나열하지 않는 플랫폼 (예 : i386 및 x86-64)에서 사용할 수 있습니다. 사용 가능한 경우 사용해야합니다.
-mthread
(솔라리스 2
-pthread
의 동의어로 나열) 등
-pthreads
(I386 및 x86-64에 Windows에서는 MinGW 특정 쓰레드 지원), GCC에 의해 사용되어 있습니다. 나의 이해는 GCC가
-pthread
을 계속적으로 사용하려고 시도하고 있다는 것이다.
4
-pthread
pthreads 라이브러리로 멀티 스레딩을 지원합니다. 이 옵션은 전처리 기와 링커 (man gcc
)에 대한 플래그를 설정합니다. 연결하면서
는
-lpthread
는 전처리 동안 영향이 없을 것입니다 존재에 오는 동안.
죄송합니다. 올바른 복제본은 다음과 같습니다. http://stackoverflow.com/q/2127797/694576 – alk
[컴파일시 -pthread 플래그의 의미] (https://stackoverflow.com/questions/2127797/gcc-significance-of) -pthread-flag-when-compiling) – jww