I 오전 쓰레드 라이브러리를 POSIX, 내가 가진 튜토리얼 샘플 코드를 컴파일하려고 할 새로운 :, g ++ 컴파일러 오류 "정의되지 않은 참조를"세마포어 호출
g++ -lpthread agreement.cpp -o agreement
그러나 나는 코드를 컴파일 할 수 없습니다 및 다음과 같은 오류 메시지가 있어요 :
a3q2.cpp:(.text+0x7e): undefined reference to `sem_open'
a3q2.cpp:(.text+0xab): undefined reference to `sem_wait'
a3q2.cpp:(.text+0x290): undefined reference to `sem_post'
a3q2.cpp:(.text+0x2af): undefined reference to `sem_close'
a3q2.cpp:(.text+0x2bb): undefined reference to `sem_unlink'
collect2: ld returned 1 exit status
make: *** [a3q2_exe] Error 1
내가 컴파일이 작동하려면 -lpthread 필요하다는 것을 알고,하지만 난 문제를 해결하기 위해해야 할 다른 옵션이있다 ? 그렇지 않다면 "적절한"pthread 라이브러리를 어떻게 설치해야합니까?
도움 주셔서 감사합니다. (당신이 정말로의 pthreads를 사용하는 경우)
사용합니다. pthreads 지원을 사용하여 컴파일하려면 라이브러리 이상이 필요할 수 있습니다. 당신의 플랫폼은 세마포어를 위해서'-lrt'를 요구할 것입니다 (당신은 man 페이지를 확인 했습니까?). –
정의되지 않은 참조는 ** 링커 **이며 ** 컴파일러 ** 오류는 아닙니다. – Griwes
또한 기호를 제공하는 객체 (및 아카이브)는 링크 할 때 해당 기호를 사용하여 * after * 객체로 정렬되어야합니다. 여기서 중요하지 않을 수도 있지만 * 시작 *이 아닌 명령의 * 끝 *쪽으로'-lfoo '를 넣는 습관을 갖습니다. – ephemient