Hi,
Seit ein paar Tagen wirft GCC unter ArchLinux "undefined" bei allen Funktionsaufrufen zurück, deren Implementation in einer statischen Lib von mir stecken. Es gibt zwei Weisen, wie ich die Lib in verschiedenen Projekten eingebunden habe:
1. Als Projekt-Dependency, deren Source immer mitkompiliert und die frisch erstellte Lib genutzt wird. Das funktioniert immer noch einwandfrei
2. Als statische .a Lib, die gelinked wird (via CMake). Sprich sie wird nicht mit dem Projekt neu kompiliert
Letzteres ging bis vor ein paar Tagen noch aber nun nicht mehr. Ich weiß gerade nicht mehr, ob ich ein Systemupdate in der Zwischenzeit gemacht hatte oder nicht, auf jeden Fall gab es am 21.12 eine neue GCC Version. An den Projekten selbst hatte ich nichts verändert. GLFW und andere Libs funktionieren noch einwandfrei, nur meine eigene wird nicht mehr gelinked.
Kann es vorkommen, dass bei einem GCC Update alte Libs nicht mehr linken? Eventuell wenn sie statisch sind?
[C++] GCC linkt eigene Lib nicht (mehr)
Re: [C++] GCC linkt eigene Lib nicht (mehr)
Ja, das kann vorkommen.
Und genau das ist vermutlich dein Problem: hier ein Auszug aus dem Changelog vom GCC zur libstdc++:
Und genau das ist vermutlich dein Problem: hier ein Auszug aus dem Changelog vom GCC zur libstdc++:
Also die Binaries musst du vermutlich neu compilieren, oder halt das #define in deine Projekt einbauen, die die alten Libs verwenden.A Dual ABI is provided by the library. A new ABI is enabled by default. The old ABI is still supported and can be used by defining the macro _GLIBCXX_USE_CXX11_ABI to 0 before including any C++ standard library headers.
Re: [C++] GCC linkt eigene Lib nicht (mehr)
Ah, danke!
Wieso linkt der noch GLFW usw? Wurden die Pakete auch aktualisiert oder ist das bei dynamischen Libs anders?
Was ist bei alten GCC Versionen? Wird der die neuen Binaries linken können? Meine Lib wird nämlich auch von Ubuntu Nutzern benutzt :-P
Wieso linkt der noch GLFW usw? Wurden die Pakete auch aktualisiert oder ist das bei dynamischen Libs anders?
Was ist bei alten GCC Versionen? Wird der die neuen Binaries linken können? Meine Lib wird nämlich auch von Ubuntu Nutzern benutzt :-P
Re: [C++] GCC linkt eigene Lib nicht (mehr)
Hm, so genau hab ich mich damit nicht beschäftigt, bin hier eher unter Windows unterwegs...
Vielleicht werden in GLFW keine Standard-Lib Sachen benutzt, bzw. sind das nicht alles C exports?
Ich weiß ja jetzt leider nicht was du in deiner Lib so alles machst, oder wo genau die GCC Jungs an der ABI rumgewerkelt haben.
Aber es könnte auch trügerisch sein, dass alles zu funktionieren scheint; und plötzlich crashed es dann irgendwo und die lustige Fehlersuche beginnt. Das kann dann sehr spaßig werden.
Für Linux/Ubuntu Programmierer sehe ich da jetzt erstmal kein Problem, die Leute die deine Lib benutzen wissen bestimmt auch wie man sie von den Sourcen neu compiliert, sind ja keine Windoof User :lol:
Vielleicht werden in GLFW keine Standard-Lib Sachen benutzt, bzw. sind das nicht alles C exports?
Ich weiß ja jetzt leider nicht was du in deiner Lib so alles machst, oder wo genau die GCC Jungs an der ABI rumgewerkelt haben.
Aber es könnte auch trügerisch sein, dass alles zu funktionieren scheint; und plötzlich crashed es dann irgendwo und die lustige Fehlersuche beginnt. Das kann dann sehr spaßig werden.
Für Linux/Ubuntu Programmierer sehe ich da jetzt erstmal kein Problem, die Leute die deine Lib benutzen wissen bestimmt auch wie man sie von den Sourcen neu compiliert, sind ja keine Windoof User :lol:
Re: [C++] GCC linkt eigene Lib nicht (mehr)
Betroffen sind nur C++ Libs von der neuen C++ ABI, keine C Libs (wie GLFW).