我一直在与一个青少年合作使用 openmp 和 gcc 进行编译的多线程项目,但是我正在加入一个使用 avr-gcc 的项目,它似乎不想编译或识别 omp.h 。当我尝试编译并且无法找到更多信息时,出现错误“avr-gcc:错误:无法识别的命令行选项'-pthread'”。我发现了这个关于 gcc-avr 更新速度较慢的问题 AVR gcc 版本 < gcc release versions -- why? 但我想知道 avr-gcc 是否尚未添加 openmp 支持或由于某种原因没有添加 openmp 支持,以及是否有解决方法而不需要团队切换编译器。
感谢您的指示,看来 avr-gcc 不提供与操作系统交互的标头,而 pthreads 显然提供了这些标头。
“由于套接字是操作系统提供的一项功能,并且您正在编译在 Arduino 微控制器上运行裸机的代码,而 Arduino 微控制器上没有运行操作系统,因此 sys/socket.h 标头的整个目的就失效了.
这适用于与操作系统交互的任何其他类型的头文件或库函数,例如 unistd.h、fcntl.h、pthread.h 等。事实上,avr-libc,AVR-GCC 的标准 C 库,不提供此类标头。
您需要查看 avr-libc 文档,以了解有关提供的标头和函数及其用法的更多信息。”
AVR 的 GNU 工具链不支持操作系统。特别是,它不支持 Pthreads。编译器/工具生成的代码需要裸机。
任何操作系统支持都必须由应用程序或通过工具的自定义扩展来提供,即您必须根据需要扩展工具源并重新生成工具。