cpp线程程序没有-fprofile-arcs就无法运行

问题描述 投票:0回答:1

这是 ubuntu 13.10 和 g++ 4.8 的一个错误,所以我关闭了这个问题。

within -Wl,--no-as-needed.

我的头有问题。 我有一些代码像

#include <iostream>
#include <thread>

int main(int argc, char* argv[])
{
    {
        std::thread t1([&]{ std::cout << "hello " << std::endl; });
        t1.join();        
    }
    return 0;
}

这是我的编译命令:

g++ -std=c++0x -lpthread test.cpp

ps:我已经更改了所有类型订单的链接顺序。

它适用于 g++ 4.7 和 ubuntu 13.04 但它在 g++ 4.8.1 和 ubuntu 12.10 上抛出 system_error

直到我使用 -fprofile-arcs 进行编译,它运行良好。

只是吼叫:

g++ test.cpp -std=c++0x -fprofile-arcs -pthread
a.out
hello

g++ test.cpp -std=c++0x  -pthread
a.out
terminate called after throwing an instance of 'std::system_error'

what():启用多线程以使用 std::thread:不允许操作

c++ multithreading c++11
1个回答
0
投票

只需搭建一个 Ubuntu 12.10 虚拟机

osmith@ubuntu1210 ~/src $ g++-4.8 --version
g++ (Ubuntu 4.8.1-2ubuntu1~12.10) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

并使用此命令行进行编译:

osmith@ubuntu1210 ~/src $ g++-4.8 -std=c++11 -o test.exe test.cpp -pthread -lpthread
osmith@ubuntu1210 ~/src $ ./test.exe
hello 
© www.soinside.com 2019 - 2024. All rights reserved.