Доброго времени суток. Возникла проблемма:
Сей код работает под Linux.
Компилится строчкой /usr/bin/gcc -o client3 client5.c -lptread.
Во FreeBSD говорит
$ /usr/local/bin/gcc34 -o client3 client5.c -lptread
/usr/libexec/elf/ld: cannot find -lpthread.
Если компилить с -pthread получаю следующее
_____________________________________________________________
$ ./client3
Before creating
After creating
Before join
Segmentation fault (core dumped)
$ sh: turning off NDELAY mode
^C
$
________________________________________________________________________
Далее код.
_________________________________________________________________________
...
for (i = 0; i<NUM_SITES; i++)
if (Status[i])
{
printf ("Before creating\n");
pthread_create (&thread[indexes[i]], NULL, (void*)&work_funct, (void*) &indexes[i]);
printf ("After creating\n");
}
for (i = 0; i<NUM_SITES; i++)
if (Status[i])
{
printf ("Before join\n");
pthread_join (thread[indexes[i]], NULL);
printf ("After join\n");
}
...
_________________________________________________________________________
void workfunct (void *i)
{
printf ("Begin\n");
....
}
_________________________________________________________________________
Как я понял из гугля, -lpthread - новая библиотека, а -pthread - старая, но что именно менять и как - не понятно:(и нужно ли?).
Остаётся только добавить, что ранее на этой системе стоял(и стоит) gcc 2.95, теперь установлен gcc 3.4 по адресу /usr/local/bin/gcc34(компилил им).
Система FreeBSD 4.9
Спасибо за ответы-советы.