来自 c++11 的 std::thread 问题
Issue with std::thread from c++11
我在尝试使用标准模板库编译多线程程序时遇到了一些麻烦。
当我尝试编译以下程序时 return 我遇到了一个模糊的错误 :
#include <iostream>
#include <thread>
void foo()
{
std::cout << "Thread 1\n";
}
int main(int argc, char** argv)
{
std::thread tr(foo);
std::cout << "Main thread\n";
tr.join();
return 0;
}
我不明白错误:
/tmp/ccE8EtL1.o : In the function « std::thread::thread<void (&)()>(void (&)()) » :
file.cpp:(.text._ZNSt6threadC2IRFvvEJEEEOT_DpOT0_[_ZNSt6threadC5IRFvvEJEEEOT_DpOT0_]+0x21) : undefined reference to « pthread_create »
collect2: error : ld has return 1 execution status code
我用 :
编译它
g++ -std=c++14 file.cpp -o test -Wall
有人可以帮我吗?
将-pthread
传递给编译器。 This flag combines what is necessary to compile and link the pthread library (-lpthread
is not always enough). See this question.
我在尝试使用标准模板库编译多线程程序时遇到了一些麻烦。 当我尝试编译以下程序时 return 我遇到了一个模糊的错误 :
#include <iostream>
#include <thread>
void foo()
{
std::cout << "Thread 1\n";
}
int main(int argc, char** argv)
{
std::thread tr(foo);
std::cout << "Main thread\n";
tr.join();
return 0;
}
我不明白错误:
/tmp/ccE8EtL1.o : In the function « std::thread::thread<void (&)()>(void (&)()) » :
file.cpp:(.text._ZNSt6threadC2IRFvvEJEEEOT_DpOT0_[_ZNSt6threadC5IRFvvEJEEEOT_DpOT0_]+0x21) : undefined reference to « pthread_create »
collect2: error : ld has return 1 execution status code
我用 :
编译它g++ -std=c++14 file.cpp -o test -Wall
有人可以帮我吗?
将-pthread
传递给编译器。 This flag combines what is necessary to compile and link the pthread library (-lpthread
is not always enough). See this question.