Wie erstelle ich eine Anwendung, die sowohl libstdc ++. So.5 als auch libstdc ++. So.6 benötigt?
Ich möchte dies mit dem wichtigen Hinweis voranstellen, dassIch bin kein C / C ++ - Programmierer, und wissensehr wenig Wie funktioniert die Verknüpfung von Bibliotheken in C.
Unser Code benutzt libstdc ++. So.6 (gcc 3.4, denke ich). Wir haben vorkompilierte (Closed Source) Bibliotheken von Drittanbietern, die libstdc ++. So.5 verwenden (gcc 2.something oder 3.2, denke ich). Dies ist unter Linux. Wir haben sowohl eine .a als auch eine .so Version der Third Party Lib.
Ist es möglich, unsere App mit den Bibliotheken von Drittanbietern zu erstellen? Wie? Ist es möglich, unsere App zu erstellen / auszuführen, ohne dass libstdc ++. So.5 auf unseren Rechnern installiert ist, wie?
Wenn ich einige wichtige Informationen vergessen habe, lass es mich bitte wissen - ich weiß kaum, was bei diesem Zeug relevant ist. Mir ist klar, dass eine vollständige Antwort wahrscheinlich nicht möglich ist. Ich bin wirklich auf der Suche nach Richtung und Anleitung. Statisch verknüpfe dies, dynamisch das, baue das neu, baue das vor, wechsle zu Version x oder verbinde das Quizdoodle mit einem Symlink, etc.
Aktualisieren:
Wir haben versucht mitdlopen
mitRTLD_LOCAL
um die 3rd-Party-Bibliothek vom Rest unserer App zu isolieren. Dies scheint zu habenmeistens Gearbeitet haben wir jedoch mit großen Speicherlecks aus unbekannten Gründen. Wir vermuten das, wenn wir anrufendlopen
, zieht die Drittanbieter-Bibliothek Symbole wiemalloc
von der bereits geladenen .so.6, und die Dinge werden durcheinander.
Zum Kichern haben wir versucht, die Drittanbieter-Bibliothek einzurichtenLD_PRELOAD
Dann lief unsere App und die Speicherlecks scheinen komplett zu verschwinden.