[C++] GCC linkt eigene Lib nicht (mehr)

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

[C++] GCC linkt eigene Lib nicht (mehr)

Beitrag von Raphael »

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?
NytroX
Establishment
Beiträge: 363
Registriert: 03.10.2003, 12:47

Re: [C++] GCC linkt eigene Lib nicht (mehr)

Beitrag von NytroX »

Ja, das kann vorkommen.
Und genau das ist vermutlich dein Problem: hier ein Auszug aus dem Changelog vom GCC zur libstdc++:
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.
Also die Binaries musst du vermutlich neu compilieren, oder halt das #define in deine Projekt einbauen, die die alten Libs verwenden.
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: [C++] GCC linkt eigene Lib nicht (mehr)

Beitrag von Raphael »

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
NytroX
Establishment
Beiträge: 363
Registriert: 03.10.2003, 12:47

Re: [C++] GCC linkt eigene Lib nicht (mehr)

Beitrag von NytroX »

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:
Benutzeravatar
Biolunar
Establishment
Beiträge: 154
Registriert: 27.06.2005, 17:42
Alter Benutzername: dLoB

Re: [C++] GCC linkt eigene Lib nicht (mehr)

Beitrag von Biolunar »

Betroffen sind nur C++ Libs von der neuen C++ ABI, keine C Libs (wie GLFW).
Antworten