g++ 4.8.1 C++ Threads, std::system_error - Betrieb nicht erlaubt?

Dies ist keine doppelte Frage, da die Lösungen vorgestellt werden sind funktioniert nicht auf meinem compiler. Ich bin versucht zu kompilieren und führen Sie das folgende Beispiel von dieser Frage.

#include <thread>
#include <iostream>

int main(int, char **){
    std::thread tt([](){ std::cout<<"Thread!"<<std::endl; });
    tt.join();
}

Ich habe versucht, verwenden Sie die Lösungen in die beiden ursprünglichen Fragestellung sowie die akzeptierte Antwort auf dieses Duplikat. Jedoch, obwohl ich habe versucht, alle Kombinationen aufgelistet, und insbesondere versucht

g++  main.cpp -o main.out -pthread -std=c++11

Wenn ich die resultierende ausführbare Datei, ich bekomme immer noch

terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted
Aborted (core dumped)

Hier ist die Ausgabe von g++ --version.

g++ (Ubuntu/Linaro 4.8.1-10ubuntu9) 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.

Ist es eine andere Bestellung oder eine Reihe von Befehlen, die ich brauche für g++ 4.8.1?

  • 4.8.1 hat einen bug. bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/1228201
  • Ich sehe. Leider ist der vorgeschlagene workaround auch nicht funktioniert. Ich hoffe, dass jemand auf SO weiß eine bessere Lösung.
  • Überprüfen Sie, ob Sie nicht eine zuvor gebaute version der Anwendung.
  • Ich entfernen Sie manuell die ausführbare Datei vor, die ich neu erstellen nur um sicher zu sein.
  • Verwenden Sie Klammerten. Ich glaube nicht, verwenden Sie Gcc für c++11 & 14-related stuff. Denn das Geräusch ist einfach nur schneller als Gcc für die Implementierung dieser neuen Funktionen. Und kompilieren Clang ist jetzt einfach, wie ein Stück der Fall.
InformationsquelleAutor merlin2011 | 2014-01-15
Schreibe einen Kommentar