无法在Debian Linux中编译C ++ 17 [重复]

问题描述 投票:-2回答:1

我有以下代码,可以在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:在函数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:错误:ld返回1退出状态

我在做什么错?

我有以下代码,可以在Windows MinGW中进行编译。 #include #include #include int main(){auto futureLambda = std :: async([](const std :: ......>

c++ compiler-errors g++ c++17
1个回答
3
投票
使用std :: thread需要链接到任何POSIX系统(包括Linux)上的pthread库。我认为对于GCC,这只是作为参数的“ -pthread”,而不是与其他库一样的“ -lpthread”。
© www.soinside.com 2019 - 2024. All rights reserved.