Undefinierter Verweis auf einen String-Konstruktor mit einem bestimmten Compiler und FlagsC++

Programme in C++. Entwicklerforum
Anonymous
 Undefinierter Verweis auf einen String-Konstruktor mit einem bestimmten Compiler und Flags

Post by Anonymous »

Völlig minimale Quelle:

Code: Select all

#include 

int main() {
std::string S;
}
Wenn ich versuche, es mit GCC 15.2.1 und den Flags -std=c++17 -fconcepts -fsanitize=undefined -O2 zu kompilieren, erhalte ich einen undefinierten Verweis auf das Symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EvQ26is_default_constructible_vIT1_E (vollständiger Fehler, nichts weiter vom Linker). Soweit ich weiß, ist das die verstümmelte Form des Konstruktors std::__cxx11::basic_string::basic_string() [mit T = char, std::is_default_constructible_v = true], obwohl c++filt es nicht entwirren kann.
Der Linkerfehler verschwindet, wenn der Sanitizer entfernt wird, zu -O0 (aber nicht -O1) gewechselt wird, -fconcepts entfernt wird oder zu C++14 oder C++20 gewechselt wird. Ich kann nicht versuchen, es im Compiler Explorer zu replizieren, da es diese GCC-Version noch nicht gibt, aber mit 15.2.0 verschwindet auch dieser Fehler – ich gehe davon aus, dass er spezifisch für 15.2.1 ist, insbesondere da ich ihn noch nie zuvor gesehen habe. GCC wird von Arch Linux-Repos installiert und das verlinkte /usr/lib/libubsan.so.1 stammt ebenfalls von diesen Repos, Paket gcc-libs 15.2.1 – nichts davon.
Ich weiß nicht, ob ich etwas ausprobiert habe, was ich nicht tun sollte, oder ob es sich um einen Compiler-Fehler handelt. Was verursacht diesen Linker-Fehler?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post