Почему C++ "Hello World" требует pthread (который отсутствует) в Eclipse Mars?
Я давно использую Eclipse Juno и MinGW 4.6.2, но мне нужна полная поддержка C++11, поэтому я обновился до Eclipse Mars и установил MinGW 4.9.3 в другой каталог.
В Mars связывание любого исполняемого файла - даже в проекте C++ Hello World - приводит к "C:\MinGW_4_9_4\bin...\ld.exe: не удается найти -lpthread".
Каталог 4.6.2 (для Juno) содержит pthread, а каталог 4.9.3 (для Mars) - нет.
Почему и как Марс пытается установить связь с pthread? (Могу ли я выключить его?)
1 ответ
Я не мог определить, возможно ли связать без pthread, но я заметил, что pthread отсутствовал после того, как я установил (и переустановил опции w/maxmium) MinGW 4.9.3. Может быть, это ошибка установщика?
В 2008 году MinGW сказал: "Используйте pthreads-win32 на sourceware.org на свой страх и риск". Теперь я вижу, что mingw-pthreads-win32 - это стандартная библиотека в инструменте установки MinGW Installation Manager (mingw-get.exe). Я чувствую себя спасенным с пуристическим отношением MinGW к Win-32, поэтому я установил библиотеку. Ура - проблема решена! Теперь ld.exe может найти -lpthread.
Вы можете найти пакет в инструменте установки MinGW Installation Manager в разделе "Все пакеты /MinGW/MinGW Libraries/MinGW Standard Libraries" на левой панели; это пакет "mingw-pthreads-win32" (класс "dev") на правой панели.