Pthreads 对avr gcc的openmp pthread支持

Pthreads 对avr gcc的openmp pthread支持,pthreads,openmp,avr-gcc,platformio,Pthreads,Openmp,Avr Gcc,Platformio,我一直在为一个使用openmp和gcc编译的多线程项目与teensy合作,但是我加入了一个使用avr gcc的项目,它似乎不想编译或识别omp.h。当我试图编译并且在查找更多信息时遇到问题时,我收到错误avr gcc:error:unrecognized命令行选项'-pthread'。我发现了一个关于gcc avr更新较慢的问题,avr gcc版本

我一直在为一个使用openmp和gcc编译的多线程项目与teensy合作,但是我加入了一个使用avr gcc的项目,它似乎不想编译或识别omp.h。当我试图编译并且在查找更多信息时遇到问题时,我收到错误avr gcc:error:unrecognized命令行选项'-pthread'。我发现了一个关于gcc avr更新较慢的问题,avr gcc版本感谢avr gcc的指导,它似乎没有提供与操作系统交互的头文件,而pthreads显然是这样做的

由于套接字是操作系统提供的一种功能,并且您正在编译在Arduino微控制器上运行裸机的代码,而该微控制器上没有运行操作系统,因此sys/socket.h标头的全部用途都是无效的

这适用于与操作系统交互的任何其他类型的头或库函数,如unistd.h、fcntl.h、pthread.h等。事实上,avr-GCC的标准C库avr libc不提供此类头


您需要查看avr libc文档,以了解更多有关提供的头文件和函数及其用法的信息。

听起来您使用的是一个确实不支持pthreads的avr gcc版本,以及一个不提供omp.h的C库。当前的GCC文档和avr GCC文档似乎表明avr GCC支持pthreads和OpenMP,因此我的第一个猜测是您使用的是过时的版本。在这种情况下,您可能确实需要将编译器切换到使用OpenMP和/或Pthreads,如果只切换到更新的版本的话。我在linux上,更新了我的avr工具链gcc avr binutils avr gdb avr libc avrdude,但我有同样的问题,这个答案似乎不一致,我希望是错误的,它们链接到没有列出对pthreads支持的文档。我想知道是否有人对gcc avr有一些特别的见解,我目前的avr工具链版本是:avr libc n 1:2.0.0+Atmel3.6.1-2。比努蒂尔斯avr 2.26.20160125+Atmel3.6.1-4。gcc avr 1:5.4.0+Atmel3.6.1-2。gdb avr 7.7-4。avrdude 6.3-20171130+svn1429-2+rpt1。您链接的问答不能不同意,因为它涉及一个完全不同的问题。话虽如此,如果我确信我正确阅读了文档,那么我会写一个答案,而不是评论。即使是最新的GCC的AVR编译器也可能不支持OpenMP或单独的问题pthreads。