컴파일 할 때 -pthread 플래그의 의미 멀티 스레드 C

다양한 멀티 스레드 C 및 C ++ 프로젝트에서 -pthread플래그는 컴파일 및 연결 단계 모두에 적용되는 반면 다른 사람들은 전혀 사용하지 않고 -lpthread연결 단계로 전달 됩니다.

컴파일 및 -pthread플래그 와 연결되지 않은 위험 -pthread이 있습니까? 즉 실제로 무엇을합니까? 저는 주로 Linux 플랫폼에 관심이 있습니다.



답변

시험:

gcc -dumpspecs | grep pthread

로 시작하는 것을 찾으십시오 %{pthread:.

내 컴퓨터에서 파일이로 컴파일 -D_REENTRANT되고에 링크됩니다 -lpthread. 다른 플랫폼에서는 다를 수 있습니다. -pthread대부분의 이식성을 위해 사용하십시오 .

_REENTRANTGNU libc에서을 사용하면 일부 libc 헤더의 작동 방식이 변경됩니다. 구체적인 예로 errno스레드 로컬 위치를 반환하는 함수 를 호출합니다.


답변

보낸 사람 man gcc:

-pthread pthreads 라이브러리를 통한 멀티 스레딩 지원을 추가합니다. 이 옵션은 전처리 기와 링커 모두에 플래그를 설정합니다.