Heim > Artikel > Backend-Entwicklung > Warum kann mein Multithread-C-Code nicht mit g kompiliert werden?
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!