【发布时间】:2020-07-18 18:06:57
【问题描述】:
我有以下代码,可以在 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;
}
当我尝试在 Linux(gcc 版本 8.3.0 (Debian 8.3.0-6))中使用
g++ -std=c++1z main.cpp
或
g++ -std=c++17 main.cpp
我明白了:
/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
我做错了什么?
【问题讨论】:
-
使用 -pthread 给你 gcc 编译选项
-
谢谢,确实做了谷歌搜索,但找不到这个。下次问之前会更努力的。
标签: c++ compiler-errors g++ c++17