우분투에서 쓰레드 사용...
글쓴이: kalp / 작성시간: 일, 2006/02/05 - 11:24오후
beginning linux programming 을 보고 있습니다.
파직스 쓰레드 부분을 보고 있는데, 컴파일 하는데 에러가 나는 군요. 우분투 5.1 사용 중입니다 : )
에러 메세지는 이렇슴다.
$ make cc -L/usr/lib/nptl -lpthread thread1.c -o thread1 thread1.c: In function 'thread_function': thread1.c:33: warning: incompatible implicit declaration of built-in function 'strcpy' [color=green]/usr/bin/ld: cannot find /usr/lib/tls/libpthread_nonshared.a[/color] collect2: ld returned 1 exit status make: *** [thread1] 오류 1
메이크 파일을 좀 들여다 봤더니 이렇군요.
all: thread2 thread2 thread3 thread3a thread4 thread5 thread6 thread7 thread8 thread8a CFLAGS=-I/usr/include/nptl -D_REENTRANT LDFLAGS=-L/usr/lib/nptl -lpthread clean: rm -f thread1 thread2 thread3 thread3a thread4 thread5 thread6 thread7 thread7a thread8 thread8a
링커가 /usr/lib/nptl/libpthread_nonshared.a 파일을 가르켜야 하는데 /usr/lib/tls/libpthread_nonshared.a 가르키고 있슴다. 요거만 fix 해주면 해결될듯 한데 어떻게 해야하는지 감이 잘 안 오는군요. 사실 정확히 어떤 라이브러리를 설치해야 쓰레드를 해야 하는지도 모르는 생초짜 입문자입니다 -.-;;;
마지막으로 쓰레드 관련 지식을 얻을 수 있는 곳 있을까요?
응용되어 쓰이는 부분이라던지 말입니다...
너무 벗겨벗는 것 같습니다.. 죄송 -.-
Forums:
Re: 우분투에서 쓰레드 사용...
gcc 컴파일러 옵션으로 위 문제는 해결이 됩니다만,
gcc -o test test.c -Wl,-rpath,dir:/usr/lib/nptl -lpthread_nonshared
대략 위와 같은 형태로 말이지요. 저도 우분투이긴 한데, /usr/lib/nptl 디렉터리 조차없습니다.
키는 -Wl,-rpath,dir:디렉터리
그러나, 제가 보기에 이런것이 문제가 아닌듯한데, 질문자가 그렇게 믿고 있다면 해보세요.
으움.
링커가 에러를 일으키는 것은 확실하군요. 컴파일은 됩니다.
제가 생각하는 원인은 라이브러리를 가르키는 경로 지정이 잘못된거 같습니다.
링커 부분을 좀 더 봐야 겠군요...
윗분께선 어떤 부분이 문제라고 생각하시는지요?? :wink:
cc -lpthread thread1.c -o thread1
cc -lpthread thread1.c -o thread1
이렇게 명령행에서 실행해 보세요.
아...
되는군요. 감사 합니다.
저자분이 왜 저런식으로 해놨는지 한번 물어봐야겠군요
:oops:
Re: 아...
제가 저자가 아니지만, ㅎㅎ
구한말에는 쓰레드 지원방식이 좀.. 정리가 덜되었고, 연구중이기도 했고, ..등등
기타의 사유로 nptl 이 기본적으로 지원되지 않았었습니다.
현재 커널(대략 2.6대)에서는 기본적으로 nptl을 지원합니다. 저자는 nptl을 사용하기 위해 애쓰면서(?!) 예제를 만든것으로 예측됩니다.
* 리눅스의 발전속도는 아주 빠르지요 :wink:
댓글 달기