【问题标题】:openmp pthread support for avr-gcc对 avr-gcc 的 openmp pthread 支持
【发布时间】:2021-03-09 00:56:22
【问题描述】:

我一直在为一个使用 openmp 和 gcc 编译的多线程项目工作,但是我正在加入一个使用 avr-gcc 的项目,它似乎不想编译或识别 omp.h 。当我尝试编译并且无法找到更多信息时,我收到错误“avr-gcc: error: unrecognized command line option '-pthread'”。我发现这个关于 gcc-avr 更新速度较慢的问题 AVR gcc version < gcc release versions -- why? 但我想知道 avr-gcc 是否还没有添加 openmp 支持或出于某种原因没有添加,以及是否有解决方法而不需要团队切换编译器.

【问题讨论】:

  • 听起来您正在使用一个确实不支持 pthreads 的 avr-gcc 版本,以及一个不提供 omp.h 的 C 库。 GCC 和 avr-gcc 的当前文档似乎特别表明 avr-gcc 支持 pthreads 和 OpenMP,所以我的第一个猜测是您使用的是过时的版本。在这种情况下,您可能确实需要切换编译器以使用 OpenMP 和/或 Pthreads,即使只是到更新的版本。
  • 我在 linux 上并更新了我的 avr 工具链 gcc-avr binutils-avr gdb-avr avr-libc avrdude 但我遇到了同样的问题,这个答案 stackoverflow.com/questions/60877241/… 似乎不同意我是谁希望是错误的,它们链接到未列出对 pthread 的支持的文档。我想知道是否有人可能对 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)。 gdb-avr (7.7-4)。 avrdude (6.3-20171130+svn1429-2+rpt1)。
  • 您链接到的问答确实不能不同意,因为它是关于一个完全不同的问题。话虽如此,如果我确信我正确阅读了文档,那么我会写一个答案,而不是评论。即使是最新的 GCC 的 AVR 编译器也可能不支持 OpenMP 或(单独的问题)pthreads。

标签: pthreads openmp avr-gcc platformio


【解决方案1】:

感谢您的指导,avr-gcc 似乎不提供与操作系统交互的标头,而 pthreads 显然提供了。

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

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

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

【讨论】:

    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 2021-05-08
    • 2016-07-12
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多