I have the following code, that I can compile in Windows MinGW.
#include <future>
#include <iostream>
#include <string>
int main(){
auto futureLambda= std::async([](const std::string& s ){return "Hello C++11 from " + s + ".";},"lambda function\n");
std::cout << futureLambda.get() << std::endl;
}
When I try to run it in Linux (gcc version 8.3.0 (Debian 8.3.0-6)) using
g++ -std=c++1z main.cpp
or
g++ -std=c++17 main.cpp
I get:
/usr/bin/ld: /tmp/cc4vI5fr.o: in function std::thread::thread<std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, char const*> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::_Async_state_impl(std::tuple<main::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, char const*>&&)::{lambda()#1}, , void>(std::__future_base::_Async_state_impl<std::thread::_Invoker<std::tuple<main::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, char const*> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::_Async_state_impl(std::tuple<main::{lambda(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, char const*>&&)::{lambda()#1}&&)':
main.cpp:(.text+0x1c72): undefined reference to 'pthread_create'
collect2: error: ld returned 1 exit status
What am I doing wrong?