Heim >Backend-Entwicklung >C++ >Warum kann mein Multithread-C-Code nicht mit g kompiliert werden?

Warum kann mein Multithread-C-Code nicht mit g kompiliert werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-01 06:01:30498Durchsuche

Why Does My Multithreaded C   Code Fail to Compile with g  ?

Multithread-Code mit g kompilieren

Obwohl die erforderlichen Flags (-pthread -std=c 11) vorhanden sind, kann Ihr Code nicht mit kompiliert werden g , was zu dem Fehler führt: „Multithreading aktivieren, um std::thread zu verwenden: Vorgang nicht zulässig.“

Beheben des Problems

Das zugrunde liegende Problem ist auf einen Fehler zurückzuführen im gcc. Um dieses Problem zu umgehen, können Sie die folgende Problemumgehung anwenden:

<code class="bash">g++ main.cpp -o main.out -pthread -std=c++11 -Wl,--no-as-needed</code>

Verstehen der Problemumgehung

Das Flag -Wl,--no-as-needed weist die an Linker, um das dynamische Laden der Threading-Bibliothek wegzulassen. Standardmäßig bindet der Linker die Threading-Bibliothek als Teil des kompilierten Programms ein, dieser Vorgang kann jedoch unter bestimmten Bedingungen fehlschlagen.

Alternativer Compiler: clang

Als Alternative Um die g-Befehlszeile zu ändern, können Sie auch einen anderen C-Compiler wie clang verwenden. Mit dem folgenden Befehl wird Ihr Code erfolgreich kompiliert:

<code class="bash">clang++ main.cpp -o main.out -std=c++11</code>

Fazit

Indem Sie die Problemumgehung -Wl,--no-as-needed verwenden oder sich für eine Alternative entscheiden Mit einem Compiler wie clang können Sie das Multithreading-Kompilierungsproblem lösen, das bei g auftritt.

Das obige ist der detaillierte Inhalt vonWarum kann mein Multithread-C-Code nicht mit g kompiliert werden?. 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