pthread.h pod linuxem

0

Mam slackware 9.1 i gdy używam funkcji create_thread:

pthread_create(&my_thread,NULL,jakasFunkcja,(void *)"Nowy watek")

program sie wyklada a linux daje komunikat "Naruszenie ochrony pamięci" (w spolonizowanej konsoli). Nie ma tu mowy o zwracaniu przez funkcje błedu bo po prostu program sie zamyka. Czy może mieć to związek z jakaś niekompletną lub zchrznaiona biblioteka pthread.h w slacku? Bo np. funkcji pthread_join w ogóle nie mam (undefined reference...). Czy ktoś się spotkał juz z podobnym problemem? Nawet krótkie programy żywcem kopiowane z tutoriali nie działają (ten sam błąd). Z góry thx za pomoc.

0
  1. Ja bym nie przekazywal stalej lancuchowej tylko oddzielnie zadeklarowana tablice
  2. Jak to kompilujesz? Czy oby na pewno dolaczasz pthread? (-lpthread)
0

ja tutaj skopiowałem przykład z tutoriala. W rzeczywistości wysyłam inta ze zmiennej, ale mniejsza z tym w każdym z tych przypadków jest ten sam błąd. Nawet jak NULL wysyłam - to samo. Korzystam z KDevelop3.0, pthread.h dołączam, bo przecież pthread_create jest. Nie jest to wina, że coś skopałem u siebie, bo w szkole (też na slacku9.1), świeżo zainstalowanym jest to samo. Czy jest możliwe żeby ta wersja slacka miała jakiąś "ułomną" biblioteke pthread? :-|

0

Korzystam z KDevelop3.0, pthread.h dołączam, bo przecież pthread_create jest.

Ale oprocz include <phtread.h> trzeba przy kompilacji przez GCC dac w linii polecen:
gcc nazwa_pliku.c -lpthread, aby dolaczylo wlasciwa wersje pthread.
Niestety nie jest w stanie stwierdzic, czy to wina twojej dystrybucji. Ja to robie w BSD, ale zarowno linux jak i bsd sa zgodne z POSIX...

0

Wielkie dzięki zaczęło działać :d [hurra] Od razu napisze na szybko gdzie to trzeba w KDevelope wstawić:
Project->Project Options->Configure options-> zakładka General w polu C/C++ preprocessor flags dodajesz -lpthread

1 użytkowników online, w tym zalogowanych: 0, gości: 1