우분투에서 쓰레드 사용...

kalp의 이미지

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 해주면 해결될듯 한데 어떻게 해야하는지 감이 잘 안 오는군요. 사실 정확히 어떤 라이브러리를 설치해야 쓰레드를 해야 하는지도 모르는 생초짜 입문자입니다 -.-;;;

마지막으로 쓰레드 관련 지식을 얻을 수 있는 곳 있을까요?
응용되어 쓰이는 부분이라던지 말입니다...
너무 벗겨벗는 것 같습니다.. 죄송 -.-

익명 사용자의 이미지

kalp wrote:

...
링커가 /usr/lib/nptl/libpthread_nonshared.a 파일을 가르켜야 하는데 /usr/lib/tls/libpthread_nonshared.a 가르키고 있슴다.
...

gcc 컴파일러 옵션으로 위 문제는 해결이 됩니다만,
gcc -o test test.c -Wl,-rpath,dir:/usr/lib/nptl -lpthread_nonshared
대략 위와 같은 형태로 말이지요. 저도 우분투이긴 한데, /usr/lib/nptl 디렉터리 조차없습니다.

키는 -Wl,-rpath,dir:디렉터리
그러나, 제가 보기에 이런것이 문제가 아닌듯한데, 질문자가 그렇게 믿고 있다면 해보세요.

kalp의 이미지

링커가 에러를 일으키는 것은 확실하군요. 컴파일은 됩니다.

제가 생각하는 원인은 라이브러리를 가르키는 경로 지정이 잘못된거 같습니다.
링커 부분을 좀 더 봐야 겠군요...

윗분께선 어떤 부분이 문제라고 생각하시는지요?? :wink:

익명 사용자의 이미지

cc -lpthread thread1.c -o thread1

이렇게 명령행에서 실행해 보세요.

kalp의 이미지

되는군요. 감사 합니다.
저자분이 왜 저런식으로 해놨는지 한번 물어봐야겠군요
:oops:

익명 사용자의 이미지

kalp wrote:

...
저자분이 왜 저런식으로 해놨는지 한번 물어봐야겠군요

제가 저자가 아니지만, ㅎㅎ

구한말에는 쓰레드 지원방식이 좀.. 정리가 덜되었고, 연구중이기도 했고, ..등등
기타의 사유로 nptl 이 기본적으로 지원되지 않았었습니다.

현재 커널(대략 2.6대)에서는 기본적으로 nptl을 지원합니다. 저자는 nptl을 사용하기 위해 애쓰면서(?!) 예제를 만든것으로 예측됩니다.

* 리눅스의 발전속도는 아주 빠르지요 :wink:

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.