Heim > Backend-Entwicklung > C++ > Warum führt die Verknüpfung eines freistehenden C-Programms mit gcc zu einem undefinierten Verweis auf „__gxx_personality_v0'?

Warum führt die Verknüpfung eines freistehenden C-Programms mit gcc zu einem undefinierten Verweis auf „__gxx_personality_v0'?

Linda Hamilton
Freigeben: 2024-11-20 14:17:13
Original
1066 Leute haben es durchsucht

Why does linking a free-standing C   program with gcc result in an undefined reference to `__gxx_personality_v0`?

Beim Kompilieren und Linken eines freistehenden C-Programms mit gcc kann ein Linker-Fehler aufgrund eines undefinierten Verweises auf __gxx_personality_v0 auftreten. Um den Zweck dieses Symbols zu verstehen, untersuchen wir seine Rolle im Kontext der von Ihnen bereitgestellten Fehlermeldung.

Welche Rolle spielt __gxx_personality_v0?

Das Symbol __gxx_personality_v0 wird in den Stapelabwickeltischen genutzt, die in der Baugruppenausgabe der Stapelabwickelung sichtbar sind. Laut Itanium C ABI wird es als Persönlichkeitsroutine bezeichnet.

Wenn es keine Ausnahmen gibt, wird die Definition dieses Symbols als globaler NULL-Void-Zeiger „funktionieren“, da keine Ausnahmen ausgelöst werden. Der Versuch, eine Ausnahme auszulösen, führt jedoch zu unerwartetem Verhalten.

Alternative Lösungen:

  • Deaktivieren Sie Ausnahmen mit -fno-Exceptions.
  • Wenn RTTI ebenfalls nicht verwendet wird, fügen Sie -fno-rtti hinzu.
  • Für Programme, die Ausnahmen verwenden, kompilieren Sie mit g statt mit gcc, was automatisch die erforderliche Bibliothek (-lstdc) einschließt.

Das obige ist der detaillierte Inhalt vonWarum führt die Verknüpfung eines freistehenden C-Programms mit gcc zu einem undefinierten Verweis auf „__gxx_personality_v0'?. 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