2011-04-27 2 views
0

내가 컴파일 할 때 cc filename.c를 컴파일 할 때 작은 스레드 프로그램을 작성했지만 컴파일 중에 문장이 생겼지 만 -lpthread (cc filename.c -lpthread)를 사용하여 컴파일하면 어떤 결과가 발생 했는가? -lpthread 왜 그것이 필요합니까? 누구든지 이것을 자세히 설명 할 수 있습니까? 큰 도움이 될 것입니다.스레드 프로그램 컴파일

+1

우리가 자세히 설명하려면, 당신은 세부 사항을 제공해야합니다. 이 경우에 우리는 적절하게 할 수 있지만 보통 유용하지 않은 것을 말하면 도움을 줄 수 없습니다. – delnan

답변

3

프로그램에서 사용하는 pthread_create() 함수는 기본 C 함수가 아니며 라이브러리를 사용해야합니다.

이 때문에 명령 스위치 -lpthread을 사용해야합니다. 이 gcc 명령은 디스크의 어딘가에 libpthread이라는 라이브러리를 찾고이를 사용하여 스레드 생성 메커니즘을 제공합니다.

난 당신이 "도서관"개념에 익숙해 이것을 읽으십시오 : - 같은 소스 코드와 출력으로 http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

0

pthread는 POSIX 스레드라고하는 것입니다. 이것은 유닉스 계열의 POSIX 환경에서 쓰레드를위한 표준 라이브러리이다.

pthread를 사용할 것이므로 컴파일러에서 해당 라이브러리에 링크하도록 지시해야합니다.

당신은 lpthread이고 어떻게 작동하는지 정확히 무엇에 대한 자세한 내용을보실 수 있습니다 : https://computing.llnl.gov/tutorials/pthreads/ -l 옵션은 일반적으로 프로그램과 연결되어야한다 (이 경우의는 pthread 라이브러리) 라이브러리를 지정하는 데 사용됩니다

+1

실제로'lpthread'로 알려진 것은 없습니다. 'libpthread'는 링크되는 물리적 라이브러리의 이름입니다; '-lpthread'는'-l pthread'의 축소 형이며, 링크는 자동적으로'lib'를 모든 라이브러리의 앞에 놓습니다. –

+0

수정 된 내 답변, 감사합니다. – rzetterberg

0

.

스레드 기능은 종종 별도의 라이브러리에 있기 때문에이를 사용하는 프로그램을 작성할 때 이와 같은 옵션이 필요합니다. 그렇지 않으면 링커 오류가 발생합니다.