-pthread和-pthreads用于在Ubuntu 14.04 C / C ++之间差(Diff

2019-10-21 18:11发布

我目前正试图编译https://github.com/OpenKinect/libfreenect在Ubuntu 14.04 LTS,但失败了。 在CMake的日志,我看就没有被发现“-pthreads”库中的错误,但它发现“-pthread”没有问题。 是什么在两者之间的区别? 是否有在Ubuntu -pthreads任何特定的包?

Answer 1:

据海湾合作委员会手册页, -pthread-pthreads是体系结构相关的标志。 这些标志不能同时适用于所有archs。 当两个标志都可以,他们似乎是彼此的同义词。 所以没有看到你确切的错误输出,我最好的猜测是,你正在运行到错误的是,“ -pthreads ”标志GCC不适用于你的弓。

我建议你阅读的手册页编译器,以获取有关哪些选项可用于编译器的您的特定版本的详细信息。



Answer 2:

除了jayhendren的回答 :

您应该避免硬编码的建筑风格特定的标志-pthread只要有可能。 而是隐藏在构建系统内心深处,你可以让你可以轻松,一旦你需要移植项目到一个新的平台,需要为宗旨不同的标志进行调整。

特别是对于线程,喜欢FindThreads模块以硬编码的参数:

find_package(Threads)

target_link_libraries(myExecutable Threads::Threads)

当你正在经历一个第三方库的问题,你可能要发送错误报告/提交有关这一问题的补丁,如果你认为这是阻止它编译你的平台上的唯一的事情。



Answer 3:

-pthread和-pthreads是编译器开关。 并行线程或POSIX线程是一个规范的名称和在Linux中的实施是“的LinuxThreads”和NPTL两者都由GNU库提供,后者是较新的。 getconf GNU_LIBPTHREAD_VERSION显示了实现。 男子7个并行线程指示编译使用P线程程序时使用“-pthread”。

安装 '的libpthread-stubs0-dev的' 包后再试一次。



文章来源: Difference between -pthread and -pthreads for C/C++ on Ubuntu 14.04
标签: ubuntu cmake