The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"pthread_rwlock_t"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"pthread_rwlock_t"
Сообщение от sae emailИскать по авторуВ закладки on 29-Окт-03, 15:47  (MSK)
как откомпилять вот такой sample на linux? на FreeBSD компиляется без проблем

-----
#include <pthread.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>

int
main (void)
{
pthread_rwlock_t rwlock;
int status ;

// status = pthread_mutex_init (&rwlock, NULL);

if (status != 0)
fprintf (stderr, "rwlock_init failed: %s\n", strerror (status));
return 0;
}
--------------

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "pthread_rwlock_t"
Сообщение от vvv emailИскать по авторуВ закладки on 29-Окт-03, 16:04  (MSK)
смотри /usr/include/pthread.h

там найдеш ф-ии для инициализации rw_lock и работы с ними.
А то лепишь rwlock_t в инициализацию митекса - конечно не скомпилится.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "pthread_rwlock_t"
Сообщение от sae emailИскать по авторуВ закладки on 29-Окт-03, 16:13  (MSK)
>смотри /usr/include/pthread.h
>
>там найдеш ф-ии для инициализации rw_lock и работы с ними.
>А то лепишь rwlock_t в инициализацию митекса - конечно не скомпилится.

строчка закоментарена же. так что нипричём.
я спрашивал с какими параметрами надо gcc запустить чтоб скомпилять

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "pthread_rwlock_t"
Сообщение от vvv emailИскать по авторуВ закладки on 29-Окт-03, 16:44  (MSK)
gcc -o <foo> -lpthread <foo>.cpp
а если .c то g++ -o <foo> -lpthread <foo>.c
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "pthread_rwlock_t"
Сообщение от sae emailИскать по авторуВ закладки on 29-Окт-03, 17:01  (MSK)
>gcc -o <foo> -lpthread <foo>.cpp
>а если .c то g++ -o <foo> -lpthread <foo>.c


и вот что получается
----
bash$ gcc -o foo -lpthread foo.c
foo.c: In function `main':
foo.c:16: `pthread_rwlock_t' undeclared (first use in this function)
foo.c:16: (Each undeclared identifier is reported only once
foo.c:16: for each function it appears in.)
foo.c:16: parse error before "rwlock"

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "pthread_rwlock_t"
Сообщение от vvv emailИскать по авторуВ закладки on 29-Окт-03, 17:04  (MSK)
>bash$ gcc -o foo -lpthread foo.c
>foo.c: In function `main':
>foo.c:16: `pthread_rwlock_t' undeclared (first use in this function)
>foo.c:16: (Each undeclared identifier is reported only once
>foo.c:16: for each function it appears in.)
>foo.c:16: parse error before "rwlock"

так я ж тебе и говорю:
>а если .c то g++ -o <foo> -lpthread <foo>.c
rw_lock работают только для C++.
Компились g++, или поменяй расширение на .cpp

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "pthread_rwlock_t"
Сообщение от sae emailИскать по авторуВ закладки on 29-Окт-03, 17:30  (MSK)
>>bash$ gcc -o foo -lpthread foo.c
>>foo.c: In function `main':
>>foo.c:16: `pthread_rwlock_t' undeclared (first use in this function)
>>foo.c:16: (Each undeclared identifier is reported only once
>>foo.c:16: for each function it appears in.)
>>foo.c:16: parse error before "rwlock"
>
>так я ж тебе и говорю:
>>а если .c то g++ -o <foo> -lpthread <foo>.c
>rw_lock работают только для C++.
>Компились g++, или поменяй расширение на .cpp


YESS! сработало! гран мерси и респект!
а почему такое ? хмммм.... почему только для с++ ??

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "pthread_rwlock_t"
Сообщение от vvv emailИскать по авторуВ закладки on 29-Окт-03, 17:34  (MSK)
да  мне и самому интересно почему в Си не собирается,
подождем, может кто скажет.

но по тексту pthread.h виден define __USE_UNIX98 который
врублен только при компиляции g++, и ручное его определение
толку не дает.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "pthread_rwlock_t"
Сообщение от Некто умный. Искать по авторуВ закладки on 29-Окт-03, 18:28  (MSK)
RTFM! Как сказал бы один мой знакомый :)) В качестве FM в данном случае выступает features.h, который включается в самом начале pthread.h
Нечего дефайнить те константы (типа __USE_UNIX98), которые являются константами для служебного пользования и ЯВНО отменяются в этом файле :))

#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
#include <pthread.h>

int
main (void)
{
pthread_rwlock_t rwlock;
int status = pthread_rwlock_init (&rwlock, NULL);

if (status != 0)
   fprintf (stderr, "rwlock_init failed: %s\n", strerror (status));
  return 0;
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "pthread_rwlock_t"
Сообщение от Некто умный. Искать по авторуВ закладки on 29-Окт-03, 18:33  (MSK)
Дело в том, что некоторые функции не являются стандартными, а являются разными расширениями, удовлетворяющими разным стандартам, типа UNIX98 :)
Вот! И так принято, что если тебе нужна какая-то функция из какого-то расширения, то ты перед самым первым #include делаешь #define, чтобы разрешить функции из этого набора, а каждый порядочный *.h файл фключает в себя одной из первых строк features.h, в котором и описаны магические константы для разных стандартов.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "pthread_rwlock_t"
Сообщение от vvv emailИскать по авторуВ закладки on 29-Окт-03, 18:35  (MSK)
Ну вот!
Даже я понял,
спасибо.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "pthread_rwlock_t"
Сообщение от sae emailИскать по авторуВ закладки on 29-Окт-03, 18:29  (MSK)
>да  мне и самому интересно почему в Си не собирается,
>подождем, может кто скажет.
>
>но по тексту pthread.h виден define __USE_UNIX98 который
>врублен только при компиляции g++, и ручное его определение
>толку не дает.

#define _GNU_SOURCE

вот эта строчка в начеле example решила проблемы , компилится при помощи gcc foo.c -o foo -lpthead

ещё больший респект Игорю aka Izh

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру