다양한 멀티 스레드 C 및 C ++ 프로젝트에서 -pthread
플래그는 컴파일 및 연결 단계 모두에 적용되는 반면 다른 사람들은 전혀 사용하지 않고 -lpthread
연결 단계로 전달 됩니다.
컴파일 및 -pthread
플래그 와 연결되지 않은 위험 -pthread
이 있습니까? 즉 실제로 무엇을합니까? 저는 주로 Linux 플랫폼에 관심이 있습니다.
답변
시험:
gcc -dumpspecs | grep pthread
로 시작하는 것을 찾으십시오 %{pthread:
.
내 컴퓨터에서 파일이로 컴파일 -D_REENTRANT
되고에 링크됩니다 -lpthread
. 다른 플랫폼에서는 다를 수 있습니다. -pthread
대부분의 이식성을 위해 사용하십시오 .
_REENTRANT
GNU libc에서을 사용하면 일부 libc 헤더의 작동 방식이 변경됩니다. 구체적인 예로 errno
스레드 로컬 위치를 반환하는 함수 를 호출합니다.
답변
보낸 사람 man gcc
:
-pthread pthreads 라이브러리를 통한 멀티 스레딩 지원을 추가합니다. 이 옵션은 전처리 기와 링커 모두에 플래그를 설정합니다.