我目前正试图编译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