LINUX.ORG.RU

Вот код: #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <pthread.h> void exit_func(void * arg) { free(arg); printf("Freed the allocated memory.\n"); } void * thread_func(void *arg) { int i; void * mem; pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, NULL); mem = malloc(1024); printf("Allocated some memory.\n"); pthread_cleanup_push(exit_func, mem); pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); for (i = 0; i < 4; i++) { sleep(1); printf("I'm still running!!!\n"); } pthread_cleanup_pop(1); } int main(int argc, char * argv[]) { pthread_t thread; pthread_create(&thread, NULL, thread_func, NULL); pthread_cancel(thread); pthread_join(thread, NULL); printf("Done.\n"); return EXIT_SUCCESS; }

Взят из LinuxFormat Компилятор выдаёт ошибки, ругается, что не знает функции pthread_*

PaulKaz
() автор топика
Ответ на: комментарий от PaulKaz

gcc -pthread -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT proga.c -lpthread

ska
()
Ответ на: комментарий от dilmah

> и -lpthread нужно ставить в конце

А это зачем? мне всегда казалось, что порядок указания разделяемых библиотек не имеет значения в "нормальных" случаях.

anonymous
()
Ответ на: комментарий от anonymous

> А это зачем? мне всегда казалось, что порядок указания разделяемых библиотек не имеет значения в "нормальных" случаях.

как-то отложилось в памяти что порядок имеет значение. возможно это для старых компиляторов, не gcc

dilmah ★★★★★
()
Ответ на: комментарий от anonymous

точно, если статик линковать то нужно; если разделяемые то без разницы

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.