Kompilieren von multithread-code mit Code::Blocks, GNU-compiler

Der Fehler

Ich versuche, mit std::thread aber ich habe diese Fehlermeldung, wenn ich versuche, um Sie auszuführen.

kündigen, genannt nach dem werfen einer Instanz von 'std::system_error'

what(): Aktivieren Sie multithreading verwenden, std::thread: Operation not
erlaubt

Aborted (core dumped)

Ergebnis meiner recherche

Gibt es eine viel von Fragen und jede Antwort, die sagen ähnliches :
Ich Bau mit "-pthread" oder "-lpthread". Manche sagen auch hinzufügen "-Wl,--no-as-needed".

Link Link Link Link Link Link Link

Habe ich versucht, eine Menge Dinge, aber keiner war.

Details

Ich bin kompilieren mit Code::Blocks 12.11, GNU GCC Compiler auf Lubuntu.
In den compiler-Einstellungen-Menü die compiler-flags habe ich überprüft

"G++ Folgen Sie den C++11 ISO-C++ Sprachstandard [-std=c++11]"

und unter anderen Optionen, die ich schrieb, was die Antwort war zu sagen, hier ist ein Beispiel

-pthread
-Wl,--no-as-needed

Hier ist der build log habe (ich bin nicht sicher, ob es wichtig ist)

g++ -Wall -fexceptions  -std=c++11 -g -pthread -Wl,--no-as-needed  -std=c++11   -I../DeskManagerDll -I/usr/include/X11/extensions -I/usr/include/X11  -c /home/julien/Documents/test/main.cpp -o obj/Debug/main.o
g++ -L/home/julien/Documents/DeskManagerDll -L-L/usr/lib/i386-linux-gnu  -o bin/Debug/test obj/Debug/main.o   -L/usr/X11R6/lib  -lX11 -lXext -lpthread -Wl,--no-as-needed  /home/julien/Documents/DeskManagerDll/bin/Debug/libDeskManagerDll.so 
Output size is 187,15 KB

Meine Frage

Was mache ich falsch ? Hab ich was verpasst ?

Bearbeiten

Ich ein sehr einfaches Programm, um auszuschließen, andere Probleme.

#include <thread>

void test()
{

}

int main()
{
    std::thread thread_fct (test);
    return 0;
}

Den build log mit diesem Programm:

g++ -Wall -fexceptions  -std=c++11 -g -pthread -Wl,--no-as-needed  -std=c++11    -c /home/julien/Documents/test/main.cpp -o obj/Debug/main.o
g++  -o bin/Debug/test obj/Debug/main.o    

Ich habe noch genau denselben Fehler. Ich weiß wirklich nicht, was zu versuchen. Haben Sie eine Idee ?

  • Versuchen Sie -pthread zu den .so Zusammenstellung als gut.
  • Ich sehe nicht, wie das zu tun, weißt du, was sollte ich google, um herauszufinden, wo kann ich es ändern ? Ich bin ein bisschen verloren in all dieser
  • In Ihrem zweiten g++ Zeile, fügen Sie -pthread (und möglicherweise entfernen -lpthread, -pthread sollte das für Sie tun.)
  • Es wurde automatisch generiert von code::blocks. Ich kann es ändern durch die Optionen, aber die "andere option" - Feld ändert die erste Zeile.
  • IMO, es ist ein bisschen unerwartet für die standard-Bibliothek zu starten überlastung EPERM bedeutet etwas ziemlich anderes.
  • Es tut mir Leid, ich verstehe nicht, was du meinst. Ist es die Fehler oder mein compiler-Einstellungen, die unerwartet sind ?

InformationsquelleAutor Heckel | 2014-05-15
Schreibe einen Kommentar