Heim >Backend-Entwicklung >C++ >Warum erhalte ich beim Kompilieren die Fehlermeldung „Undefiniertes Symbol ___gxx_personality_v0'?

Warum erhalte ich beim Kompilieren die Fehlermeldung „Undefiniertes Symbol ___gxx_personality_v0'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-15 17:48:021026Durchsuche

Why am I getting an

Debugging-Fehler „Undefiniertes Symbol ___gxx_personality_v0“ während der Kompilierung

Problem:

Beim Erstellen von C Wenn Sie über die Befehlszeile Code eingeben, tritt ein undefinierter Symbolfehler auf:

$ gcc test.cpp
Undefined symbols:
  "___gxx_personality_v0", referenced from:

Trotz der Einfachheit des Codes kann er ohne Erklärung nicht kompiliert werden.

Erklärung:

Der Fehler tritt auf, weil der Code mit gcc, einem Compiler für die Sprache C, und nicht mit g, dem Compiler für C, kompiliert wird. Das Symbol ___gxx_personality_v0 ist ein spezifisches Symbol für die C-Standardbibliothek (libstdc) und ist in der C-Standardbibliothek (libc) nicht vorhanden.

Lösung:

Es gibt zwei Lösungen, um dieses Problem zu beheben:

  • Verwenden Sie g:

    Da der Code in C geschrieben ist, sollte er mit g kompiliert werden , das sowohl den C-Compiler als auch die C-Standardbibliothek enthält. Verwenden Sie stattdessen diesen Befehl:

    $ g++ test.cpp
  • Fügen Sie die C-Standardbibliothek hinzu:

    Wenn Sie gcc verwenden müssen, können Sie C hinzufügen Standardbibliothek durch Hinzufügen des Flags -lstdc zur Befehlszeile. Dieses Flag weist den Linker an, die libstdc-Bibliothek einzuschließen, die die erforderlichen Symbole enthält. Verwenden Sie stattdessen diesen Befehl:

    $ gcc test.cpp -lstdc++

Hinweis:

Die Verwendung von g ist die bevorzugte Methode, da sie sowohl C- als auch C-Code nahtlos verarbeitet. Indem Sie den richtigen Compiler für die von Ihnen verwendete Sprache auswählen, können Sie diese Art von Fehlern verhindern und eine erfolgreiche Kompilierung sicherstellen.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Kompilieren die Fehlermeldung „Undefiniertes Symbol ___gxx_personality_v0'?. 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