Я собираю gcc 9.10, и он отлично работает с потоками c, но я делаю что-то не так с g ++ и libstdc ++ - v3 Я просто не знаю, что.
Я компилирую gcc / g ++, glibc и libstdc ++ - v3Я вижу, что файл в include / c ++ / 9.1.0 / threads Когда я собираюсь скомпилировать простую тестовую программу, я получаю
error: ‘thread’ is not a member of ‘std’
C pthread, тестовая программа компилирует
#include <pthread.h>
int main(){
tpthread_t t;
}
Cтестовая программа компилируется
#include <threads.h>
int main(){
thrd_t t;
}
Cxx тестовая программа не компилируется
#include <thread>
int main(){
std::thread t;
}
Получает ошибку
error: ‘thread’ is not a member of ‘std’
Просмотр заголовка включает / c ++ / 9.1.0 /threads
#if defined(_GLIBCXX_HAS_GTHREADS)
похоже, что он пропускает все, если это не определено, как я могу проверить, если это так, и почему?
Я сделал этот маленький тест, и он компилирует с указаниеммне что _GLIBCXX_HAS_GTHREADS не определено
int main(){
#if defined(_GLIBCXX_HAS_GTHREADS)
123 here error
#endif
}
при компиляции libstdc ++ - v3 Я использую
../libstdc++-v3/configure -v --enable-libstdcxx-threads=yes
, хотя я думаю, что потоки должны быть включены по умолчанию в системе Linux x64
Другой вопрос не помогает моей ситуациис давным-давно и GCC изменился.Один комментарий выглядит так, как будто он касается моей проблемы, но не углубляется
If you look in the thread header, it appears that the class only exists #if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1). I'm not sure though, what you'd have to do to have those defined
Это проблема, с которой я столкнулся, но нет решения