Ubuntu 14.04 上 C/C++ 的 -pthread 和 -pthreads 之间的区别
Difference between -pthread and -pthreads for C/C++ on Ubuntu 14.04
我目前正在尝试在 Ubuntu 14.04 LTS 上编译 https://github.com/OpenKinect/libfreenect,但它失败了。在 CMake 日志中,我看到有关未找到“-pthreads”库的错误,但它毫无问题地找到了“-pthread”。两者有什么区别? Ubuntu 上的 -pthreads 是否有任何特定的包?
根据 GCC 手册页,-pthread
和 -pthreads
是特定于体系结构的标志。这些标志并非都适用于所有拱门。在两个标志都可用的情况下,它们似乎是彼此的同义词。因此,在没有看到您的确切错误输出的情况下,我最好的猜测是您 运行 遇到的错误是 GCC 的“-pthreads
”标志不适用于您的 arch。
我建议您阅读编译器的手册页,以获取有关您的编译器的特定版本可用的选项的更多信息。
-pthread 和-pthreads 是编译器开关。 Pthreads 或 POSIX threads 是规范的名称, Linux 中的实现是 'LinuxThreads' 和 NPTL 都是由 GNU libc 提供的,后者更新。 getconf GNU_LIBPTHREAD_VERSION
显示了实现。 man 7 pthreads 指示在编译使用 Pthread 的程序时使用“-pthread”。
安装 'libpthread-stubs0-dev' 软件包后重试。
除了:
您应该尽可能避免对体系结构特定标志进行硬编码,例如 -pthread
。而是尽可能将它们隐藏在构建系统中,以便在需要将项目移植到需要不同标志的新平台时轻松调整它们。
特别是对于线程,更喜欢FindThreads module而不是对参数进行硬编码:
find_package(Threads)
target_link_libraries(myExecutable Threads::Threads)
当您在第三方库中遇到问题时,如果您认为这是唯一阻止它在你的平台。
我目前正在尝试在 Ubuntu 14.04 LTS 上编译 https://github.com/OpenKinect/libfreenect,但它失败了。在 CMake 日志中,我看到有关未找到“-pthreads”库的错误,但它毫无问题地找到了“-pthread”。两者有什么区别? Ubuntu 上的 -pthreads 是否有任何特定的包?
根据 GCC 手册页,-pthread
和 -pthreads
是特定于体系结构的标志。这些标志并非都适用于所有拱门。在两个标志都可用的情况下,它们似乎是彼此的同义词。因此,在没有看到您的确切错误输出的情况下,我最好的猜测是您 运行 遇到的错误是 GCC 的“-pthreads
”标志不适用于您的 arch。
我建议您阅读编译器的手册页,以获取有关您的编译器的特定版本可用的选项的更多信息。
-pthread 和-pthreads 是编译器开关。 Pthreads 或 POSIX threads 是规范的名称, Linux 中的实现是 'LinuxThreads' 和 NPTL 都是由 GNU libc 提供的,后者更新。 getconf GNU_LIBPTHREAD_VERSION
显示了实现。 man 7 pthreads 指示在编译使用 Pthread 的程序时使用“-pthread”。
安装 'libpthread-stubs0-dev' 软件包后重试。
除了
您应该尽可能避免对体系结构特定标志进行硬编码,例如 -pthread
。而是尽可能将它们隐藏在构建系统中,以便在需要将项目移植到需要不同标志的新平台时轻松调整它们。
特别是对于线程,更喜欢FindThreads module而不是对参数进行硬编码:
find_package(Threads)
target_link_libraries(myExecutable Threads::Threads)
当您在第三方库中遇到问题时,如果您认为这是唯一阻止它在你的平台。