C/C+的-pthread和-pthread之间的区别+;在Ubuntu 14.04上

C/C+的-pthread和-pthread之间的区别+;在Ubuntu 14.04上,ubuntu,cmake,Ubuntu,Cmake,我目前正试图在Ubuntu14.04LTS上编译,但失败了。在CMake日志中,我看到关于“-pthreads”库的错误没有找到,但它找到“-pthread”没有问题。两者的区别是什么?Ubuntu上的-pthreads有任何特定的包吗?根据GCC手册页,-pthread和-pthreads是特定于架构的标志。并非所有拱门都可以使用这些标志。如果两个标志都可用,则它们似乎是彼此的同义词。因此,在没有看到确切的错误输出的情况下,我的最佳猜测是,您遇到的错误是GCC的“-pthreads”标志不适用

我目前正试图在Ubuntu14.04LTS上编译,但失败了。在CMake日志中,我看到关于“-pthreads”库的错误没有找到,但它找到“-pthread”没有问题。两者的区别是什么?Ubuntu上的-pthreads有任何特定的包吗?

根据GCC手册页,
-pthread
-pthreads
是特定于架构的标志。并非所有拱门都可以使用这些标志。如果两个标志都可用,则它们似乎是彼此的同义词。因此,在没有看到确切的错误输出的情况下,我的最佳猜测是,您遇到的错误是GCC的“
-pthreads
”标志不适用于您的arch


我建议您阅读编译器的手册页,以获得有关特定编译器版本可用选项的更多信息。

-pthread和-pthread是编译器开关。Pthreads或POSIX threads是一个规范的名称,Linux中的实现是“LinuxThreads”,NPTL都是由gnulibc提供的,后者是较新的<代码>getconf GNU_LIBPTHREAD_VERSION显示了实现。man 7指示在编译使用pthread的程序时使用“-pthread”

安装“libpthread-stubs0-dev”包后重试

除了:

尽可能避免硬编码特定于体系结构的标志,如
-pthread
。相反,在构建系统中尽可能深地隐藏它们,以便在需要将项目移植到需要不同标志的新平台时可以轻松地调整它们

特别是对于线程,与硬编码参数相比,更喜欢:

find_package(Threads)

target_link_libraries(myExecutable Threads::Threads)

当您在第三方库中遇到此问题时,如果您认为这是唯一阻止它在您的平台上编译的原因,您可能需要提交一份错误报告/提交一份有关此问题的修补程序。

这并不能回答此问题。若要评论或要求作者澄清,请在其帖子下方留下评论。