Heim >Backend-Entwicklung >C++ >Warum kann mein C-„std::thread'-Code unter Linux nicht mit GCC verknüpft werden, und wie kann ich das beheben?

Warum kann mein C-„std::thread'-Code unter Linux nicht mit GCC verknüpft werden, und wie kann ich das beheben?

Linda Hamilton
Linda HamiltonOriginal
2024-11-29 07:08:09266Durchsuche

Why Does My C   `std::thread` Code Fail to Link on Linux with GCC, and How Can I Fix It?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn