내가 컴파일 할 때 cc filename.c를 컴파일 할 때 작은 스레드 프로그램을 작성했지만 컴파일 중에 문장이 생겼지 만 -lpthread (cc filename.c -lpthread)를 사용하여 컴파일하면 어떤 결과가 발생 했는가? -lpthread 왜 그것이 필요합니까? 누구든지 이것을 자세히 설명 할 수 있습니까? 큰 도움이 될 것입니다.스레드 프로그램 컴파일
답변
프로그램에서 사용하는 pthread_create()
함수는 기본 C 함수가 아니며 라이브러리를 사용해야합니다.
이 때문에 명령 스위치 -lpthread
을 사용해야합니다. 이 gcc 명령은 디스크의 어딘가에 libpthread
이라는 라이브러리를 찾고이를 사용하여 스레드 생성 메커니즘을 제공합니다.
난 당신이 "도서관"개념에 익숙해 이것을 읽으십시오 : - 같은 소스 코드와 출력으로 http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
pthread는 POSIX 스레드라고하는 것입니다. 이것은 유닉스 계열의 POSIX 환경에서 쓰레드를위한 표준 라이브러리이다.
pthread를 사용할 것이므로 컴파일러에서 해당 라이브러리에 링크하도록 지시해야합니다.
당신은 lpthread이고 어떻게 작동하는지 정확히 무엇에 대한 자세한 내용을보실 수 있습니다 : https://computing.llnl.gov/tutorials/pthreads/ -l 옵션은 일반적으로 프로그램과 연결되어야한다 (이 경우의는 pthread 라이브러리) 라이브러리를 지정하는 데 사용됩니다
실제로'lpthread'로 알려진 것은 없습니다. 'libpthread'는 링크되는 물리적 라이브러리의 이름입니다; '-lpthread'는'-l pthread'의 축소 형이며, 링크는 자동적으로'lib'를 모든 라이브러리의 앞에 놓습니다. –
수정 된 내 답변, 감사합니다. – rzetterberg
.
스레드 기능은 종종 별도의 라이브러리에 있기 때문에이를 사용하는 프로그램을 작성할 때 이와 같은 옵션이 필요합니다. 그렇지 않으면 링커 오류가 발생합니다.
- 1. 크로스 스레드 호출 컴파일 문제
- 2. WPF 응용 프로그램 스레드
- 3. 응용 프로그램 도메인과 스레드
- 4. 스레드 응용 프로그램 문제
- 5. 내 스레드 프로그램 블록
- 6. 다중 스레드 프로그램
- 7. 응용 프로그램 스레드 대 서비스 스레드
- 8. 단일 스레드 - 멀티 스레드 응용 프로그램
- 9. 멀티 스레드 프로그램 : 계산 스레드 스택 공간
- 10. 이전 프로그램 디 컴파일
- 11. cutil 함수 컴파일 프로그램
- 12. 리눅스에서 C++ 프로그램 컴파일
- 13. sse3없이 gnu 프로그램 컴파일
- 14. Objective-C 프로그램 컴파일
- 15. 멀티 스레드 응용 프로그램 디버깅
- 16. .NET 응용 프로그램 스레드 줄이기
- 17. 다중 스레드 응용 프로그램 디버깅
- 18. 스레드 C# 응용 프로그램 충돌
- 19. 다중 스레드 프로그램에서 프로그램 종료
- 20. 자바 응용 프로그램/스레드 서버
- 21. VS2010의 C++ 메타 프로그램 컴파일
- 22. 특정 아키텍처의 C 프로그램 컴파일
- 23. swf 파일 디 컴파일 프로그램
- 24. 동적 ASP.NET 응용 프로그램 컴파일
- 25. WinUsb를 사용하는 응용 프로그램 컴파일
- 26. Flex 3.0 응용 프로그램 컴파일
- 27. 기본 android 응용 프로그램 컴파일
- 28. OpenMPI 프로그램 컴파일 및 실행
- 29. VB.NET 응용 프로그램 재 컴파일
- 30. Windows XP에서 C++ 프로그램 컴파일
우리가 자세히 설명하려면, 당신은 세부 사항을 제공해야합니다. 이 경우에 우리는 적절하게 할 수 있지만 보통 유용하지 않은 것을 말하면 도움을 줄 수 없습니다. – delnan