Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: REENTERANT в CodeBlocks  (Прочитано 653 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
REENTERANT в CodeBlocks
« : 20 Декабрь 2013, 16:24:39 »
Здравствуйте.

Изучаю работу потоков в Linux, мне не понятно как сделать функции реентерабельными, то есть компиляция должна происходить так

gcc threads.c -D_REENTERANT -I/usr/include/nptl -L/usr/lib/nptl –lpthread -o threads

Но я пишу в CodeBlocks и не пользуюсь Makefile-ом. Сам найти D_REENTERANT в опциях КодеБлокса я не смог. Подскажите пожалуйста как сделать функции реентерабельными не используя MakeFile?

Спасибо за внимание.

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7188
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #1 : 20 Декабрь 2013, 16:41:11 »
gunsoy, прописать в параметрах проекта...

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #2 : 20 Декабрь 2013, 17:03:15 »
А можно по подробней? Зашёл я в Properties, а дальше там целая куча вкладок и не понятно где и что прописывать. Где-то прописать D_REENTERANT?

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7188
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #3 : 21 Декабрь 2013, 00:03:20 »
gunsoy, C или C++?

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #4 : 21 Декабрь 2013, 05:54:30 »
C++

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7188
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #5 : 21 Декабрь 2013, 15:22:20 »
gunsoy, а почему используете gcc, а не g++? Код приведите.

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #6 : 21 Декабрь 2013, 18:26:23 »
gcc я не использую, а эту часть gcc threads.c -D_REENTERANT -I/usr/include/nptl -L/usr/lib/nptl –lpthread -o threads я взял из урока по потокам, там говорилось что D_REENTERANT сделает функции реентерабельными. Сам код потоков, который я взял из этого урока у меня запустился, но из-за отсутствия реентерабельности, он работает не так как должен. Вот урок из которого я взял код http://citforum.oldbank.com/programming/unix/threads/ Самый первый пример

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7188
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #7 : 21 Декабрь 2013, 19:48:00 »
gunsoy, создавайте C поект, а не C++, иначе не скомпилится. А команда для компиляции гораздо проще:
gcc test.c -pthread -o testНа современных Linux-ах это вроде бы равнозначно.
Кликните ПКМ на проекте (где дерево файлов), выберите пункт bild options, откройте Linker Settings и в Other linker options напишите -pthread

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #8 : 21 Декабрь 2013, 20:40:35 »
Спасибо за помощь. А почему С++ проект не скомпилится? Мне С++ нужен, без классов никак=(

Онлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5215
  • Все по палатам!
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #9 : 21 Декабрь 2013, 20:47:37 »
gunsoy,
Создать проект С++
Извините, я все еще учусь

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7188
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #10 : 21 Декабрь 2013, 21:36:17 »
gunsoy, с++ не скомпилится из-за функции sleep(1);
Надо будет подключить файл
Код: (cpp) [Выделить]
#include <unistd.h>

Оффлайн gunsoy

  • Автор темы
  • Участник
  • *
  • Сообщений: 178
    • Просмотр профиля
Re: REENTERANT в CodeBlocks
« Ответ #11 : 21 Декабрь 2013, 21:44:50 »
Всё понял всем спасибо за помощь.

 

Страница сгенерирована за 0.077 секунд. Запросов: 25.