Beheben von Verknüpfungsproblemen bei der Verwendung von std::thread mit GCC unter Linux
Im Bereich Multithreading mit C bietet die C-Standardbibliothek die std::thread-Klasse. Beim Versuch, std::thread mit GCC auf einem Linux-System zu verwenden, kann der folgende Fehler auftreten:
terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted
Ursache:
Dieser Fehler weist auf eine ordnungsgemäße Verknüpfung hin Für den Compiler wurden keine Optionen angegeben, um Abhängigkeiten im Zusammenhang mit std::thread aufzulösen. Insbesondere unter Linux ist die pthread-Bibliothek an der Implementierung von std::thread beteiligt.
Lösung:
Um dieses Problem zu beheben, muss die Compileroption -pthread verwendet werden beschäftigt sein. Diese Option weist den Compiler an, das Programm mit der pthread-Bibliothek zu verknüpfen. So kompilieren Sie den Code mit der entsprechenden Verknüpfungsoption korrekt:
g++ -std=c++0x test.cpp -pthread
Platzierung der Verknüpfungsoption:
Es ist wichtig zu beachten, dass die Option -pthread aufgeführt werden sollte nach der Quelldatei (.cpp) beim Kompilieren. Dadurch wird sichergestellt, dass der Compiler die Abhängigkeiten korrekt auflöst.
Überarbeiteter Befehl:
Nach dem Hinzufügen der Option -pthread wird der überarbeitete Kompilierungsbefehl wie folgt angezeigt:
g++ -std=c++0x test.cpp -pthread
Durch die Einbindung der Option -pthread wird der Code erfolgreich kompiliert und ausgeführt, sodass std::thread wie vorgesehen funktioniert Multithreading in Ihrer Linux-Umgebung.
Das obige ist der detaillierte Inhalt vonWarum kann mein C-„std::thread'-Code unter Linux nicht mit GCC verknüpft werden, und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!