поддержка openmp pthread для avr-gcc

Я работал с teensy над многопоточным проектом, используя компиляцию openmp с помощью gcc, однако я присоединяюсь к проекту, который использует avr-gcc, который, похоже, не хочет компилировать или распознавать omp.h. Я получаю сообщение об ошибке avr-gcc: ошибка: нераспознанный параметр командной строки '-pthread', когда пытаюсь скомпилировать и не могу найти дополнительную информацию. Я нашел этот вопрос о том, что gcc-avr имеет более медленные обновления -- почему? но мне интересно, не добавила ли avr-gcc поддержку openmp или нет по той или иной причине, и есть ли обходной путь, не требующий от команды переключения компиляторов.


person john8839    schedule 09.03.2021    source источник
comment
Похоже, вы используете версию avr-gcc, которая действительно не поддерживает pthreads, и библиотеку C, которая не предоставляет omp.h. Текущие документы для GCC в целом и для avr-gcc в частности указывают, что avr-gcc поддерживает pthreads и OpenMP, поэтому я думаю, что вы используете устаревшую версию. В этом случае вам, вероятно, действительно потребуется переключить компиляторы на использование OpenMP и/или Pthreads, хотя бы на более новую версию.   -  person John Bollinger    schedule 09.03.2021
comment
Я работаю в Linux и обновил набор инструментов avr gcc-avr binutils-avr gdb-avr avr-libc avrdude, но у меня та же проблема, этот ответ stackoverflow.com/questions/60877241/, кажется, не согласен, что, я надеюсь, неверно, они ссылаются в документы, в которых не указана поддержка pthreads. Мне интересно, может ли кто-нибудь что-нибудь понять конкретно о gcc-avr, мои текущие версии цепочки инструментов avr: avr-libc n (1: 2.0.0 + Atmel3.6.1-2). binutils-avr (2.26.20160125+Atmel3.6.1-4). gcc-avr (1:5.4.0+Atmel3.6.1-2). гдб-авр (7.7-4). avrdude (6.3-20171130+svn1429-2+rpt1).   -  person john8839    schedule 09.03.2021
comment
Вопросы и ответы, на которые вы ссылались, не могут не согласиться, поскольку речь идет о совершенно другом вопросе. С учетом сказанного, если бы я был уверен, что правильно читаю документы, я бы написал ответ, а не комментарий. Возможно, даже последний из компиляторов GCC AVR не поддерживает ни OpenMP, ни (отдельный вопрос) pthreads.   -  person John Bollinger    schedule 09.03.2021


Ответы (1)


спасибо за указание, похоже, что avr-gcc не предоставляет заголовки, которые взаимодействуют с операционными системами, что, по-видимому, делает pthreads.

Поскольку сокеты — это функция, предоставляемая операционной системой, и вы компилируете код, работающий на чистом железе на микроконтроллере Arduino, на котором не работает операционная система, вся цель заголовка sys/socket.h сводится на нет.

Это относится к любому другому виду заголовков или библиотечных функций, взаимодействующих с операционной системой, таких как unistd.h, fcntl.h, pthread.h и т. д. На самом деле, avr-libc, стандартная библиотека C для AVR-GCC, делает не предоставлять такие заголовки.

Вам нужно будет просмотреть документацию avr-libc, чтобы узнать больше о предоставляемых заголовках и функциях, а также об их использовании.

person john8839    schedule 09.03.2021