programing

컴파일하는 동안 -pthread와 -lpthread의 차이점

nasanasas 2020. 8. 27. 07:51
반응형

컴파일하는 동안 -pthread와 -lpthread의 차이점


의 차이 무엇입니까 gcc -pthreadgcc -lpthread멀티 스레드 프로그램을 컴파일하는 동안 사용됩니까?


-pthread 컴파일러에게 pthread 라이브러리에서 링크하고 스레드에 대한 컴파일을 구성하도록 지시합니다.

예를 들어 다음은 -pthreadUbuntu 컴퓨터에 설치된 GCC 패키지 에서 옵션이 사용될 때 정의되는 매크로를 보여줍니다 .

$ 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)에서 사용할 수 있습니다. 사용 가능한 경우 사용해야합니다.

또한 -pthreads( -pthreadSolaris 2에 대한 동의어로 나열 됨 ) 및 -mthread(i386 및 x86-64 Windows에서 MinGW 특정 스레드 지원용 )과 같은 다른 유사한 옵션이 GCC에서 사용되었습니다 . 내 이해는 GCC가 -pthread앞으로 균일하게 사용하려고 노력하고 있다는 것입니다.


-pthreadpthreads 라이브러리로 멀티 스레딩 지원을 추가합니다. 이 옵션은 전처리 기와 링커 ( man gcc) 모두에 대한 플래그를 설정합니다 .

동안

-lpthread 링크하는 동안 존재하는 것은 전처리 중에 영향을 미치지 않습니다.

참고 URL : https://stackoverflow.com/questions/23250863/difference-between-pthread-and-lpthread-while-compiling

반응형