Linkerprobleme std::stacktrace unter Unix



  • Hallo,

    ich arbeite an einem Basis-Projekt (Unix / Windows) und möchte erstmalig std::stacktrace nutzen. Unter Windows alles kein Thema, lässt sich kompilieren und linken.

    Unter Unix habe ich Schwierigkeiten beim Linken. Hier ist mal die von Visual Studio erzeugte Kommandozeile für das Linken:

    -o"E:\C++\Framework\VS2022Unix\CoreTests\bin\x64\Debug\CoreTestsD.out" "3600000" -Wl,-z,relro -Wl,-z,noexecstack -Wl,--no-undefined "g++" -l"CoreD" -l"UnittestD" -l"dl" -l"unwind" -l"dw" -Wl,-L"~/projects/CoreTests/../Core/bin/x64/Debug" -Wl,-L"~/projects/CoreTests/../Unittest/bin/x64/Debug" -Wl,-z,now

    Ich erhalte aber die folgenden Fehlermeldungen:

    /home/debian/projects/Core/bin/x64/Debug/libCoreD.a(Exception.o): in function std::stacktrace_entry::_S_init()': undefined reference to__glibcxx_backtrace_create_state'
    /home/debian/projects/Core/bin/x64/Debug/libCoreD.a(Exception.o): in function std::basic_stacktrace<std::allocator<std::stacktrace_entry> >::current(std::allocator<std::stacktrace_entry> const&)': undefined reference to__glibcxx_backtrace_simple'
    ld returned 1 exit status

    ChatGPT konnte mir bisher nicht weiterhelfen. Hat jemand eine Idee?

    Vielen Dank im Voraus

    VG Torsten


  • Mod

    Die wichtigste Info hast du weg gelassen, nämlich womit du compilierst. Aber beispielsweise bei GCC musst du beispielsweise noch -lstdc++_libbacktrace angeben.



  • Hallo,

    sorry für die späte Rückmeldung. Ich kompiliere und linke mit g++.

    Ich habe nun auch ein ArchLinux (Console) in einer neuen VM aufgesetzt, dort erhalte ich ähnliche Linkermeldungen. Ist die std::stacktrace Klasse so neu, dass die auf keinem Linux ohne Umwege greifbar ist?

    VG Torsten



  • Hallo nochmal,

    ich habe nun herausgefunden, dass auf ArchLinux die std::stacktrace-Klasse in stdc++exp enthalten ist. Die Projekte lassen sich nun also bauen. Versuche ich unter Debian auch gleich nochmal.

    VG Torsten


Anmelden zum Antworten