Вопрос по pthread
От: Посторонним В. Беларусь  
Дата: 25.01.07 10:24
Оценка:
Linux 2.6.19, gcc 3.4.6.
// main.c
#include "stdio.h"
#include <pthread.h>

int main()
{
    printf("Thread id using pthread: %li\n", pthread_self());
    getchar();
    return 0;
}

% gcc main.c -lpthread -o main
% ./main

все ок, печатает id потока

а теперь без -lpthread
% gcc main.c -o main
% ./main

Выдает 0.
Вопрос: почему gcc вообще такое линкует? И почему печатает 0?
Re: Вопрос по pthread
От: Quintanar Россия  
Дата: 25.01.07 16:57
Оценка: 2 (1)
Здравствуйте, Посторонним В., Вы писали:

ПВ>Вопрос: почему gcc вообще такое линкует? И почему печатает 0?


Потому что в libc есть заглушки. Нужны, чтобы подгружать библиотеки с pthreads в приложения, где pthreads не нужны.
Re[2]: Вопрос по pthread
От: Посторонним В. Беларусь  
Дата: 25.01.07 18:34
Оценка:
Здравствуйте, Quintanar, Вы писали:

Q>Здравствуйте, Посторонним В., Вы писали:


ПВ>>Вопрос: почему gcc вообще такое линкует? И почему печатает 0?


Q>Потому что в libc есть заглушки. Нужны, чтобы подгружать библиотеки с pthreads в приложения, где pthreads не нужны.


Хм.. но на другие функции вроде pthread_create линкер ругается.
Re[3]: Вопрос по pthread
От: Quintanar Россия  
Дата: 25.01.07 20:33
Оценка:
Здравствуйте, Посторонним В., Вы писали:

ПВ>Хм.. но на другие функции вроде pthread_create линкер ругается.


pthread_create имеет важную функциональность. Т.е. без реальной функции линковать нет смысла. Наверно, поэтому его не включили в заглушки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.