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_PRELOADDann lief unsere App und die Speicherlecks scheinen komplett zu verschwinden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage