Разница между -pthread и -pthreads для C / C ++ на Ubuntu 14.04

В настоящее время я пытаюсь скомпилировать https://github.com/OpenKinect/libfreenect на Ubuntu 14.04 LTS, но он не работает. В журналах CMake я вижу ошибки в отношении библиотеки «-pthreads», которая не найдена, но находит «-pthread» без проблем. В чем разница между ними? Есть ли какой-либо конкретный пакет для -pthreads на Ubuntu?

Согласно странице руководства GCC, -pthread и -pthreads представляют собой флаги, специфичные для архитектуры. Эти флаги не доступны для всех арков. Если оба флага доступны, они кажутся синонимами друг для друга. Поэтому, не видя точного вывода ошибок, я думаю, что ошибка, с которой вы -pthreads заключается в том, что флаг « -pthreads » для GCC недоступен для вашей арки.

Я предлагаю вам прочитать man-страницу вашего компилятора, чтобы получить больше информации о том, какие параметры доступны для вашей конкретной сборки вашего компилятора.

В дополнение к ответу Джейендрена :

Вы должны избегать специфических флагов архитектуры -pthread таких как -pthread когда это возможно. Вместо этого скройте их как можно дальше в системе сборки, чтобы вы могли легко их отрегулировать, как только вам нужно перенести свой проект на новую платформу, для которой требуются разные флаги.

Для streamов, в частности, предпочитайте модуль FindThreads для жесткого кодирования параметров:

 find_package(Threads) target_link_libraries(myExecutable Threads::Threads) 

По мере возникновения проблемы в сторонней библиотеке вы можете захотеть записать отчет об ошибке или отправить исправление, касающееся этой проблемы, если считаете, что это единственное, что не позволяет компиляции на вашей платформе.

-pthread и -pthreads – это компиляторы. Pthreads или streamи POSIX – это имя спецификации, а реализация в Linux – «LinuxThreads», а NPTL – как GNU libc, последняя – более новая. getconf GNU_LIBPTHREAD_VERSION показывает реализацию. man 7 pthreads инструктирует использовать ‘-pthread’ при компиляции программ, которые используют Pthreads.

Повторите попытку после установки пакета libpthread-stubs0-dev.