El siguiente es mi primer programa de subprocesos múltiples. Pero mientras se compiló, hay un error de enlace. La parte del mensaje de error:
std::thread::thread<void (&)(int), int&>(void (&)(int), int&):
test.cpp (.text._ZNSt6threadC2IRFviEJRiEEEOT_DpOT0_[_ZNSt6threadC5IRFviEJRiEEEOT_DpOT0_]+0x33): undefined reference pthread_create
collect2: error ld return 1
#include<thread>
void f(int i) {}
int main() {
std::thread t(f, 1);
t.join();
return 0;
}
Respuesta aceptada:
Necesitas compilar con -pthread
como opción de compilación.
Obtuve su código para compilar con esto (aunque agregué el -Wall
función para darme todos los avisos de advertencia):
g++ -pthread -out foo.exe foo.cpp
(donde foo.cpp
fue el nombre de archivo de entrada que usé que contenía su código)