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
Freigeben: 2024-11-29 07:08:09
Original
252 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage