Wie kombiniert shared-libraries?
Habe ich einige .so
Bibliotheken, die ich möchte, kombiniert in einer shared-library, so dass es hängt nicht von den original .so
Dateien mehr.
Den .so
- Dateien haben Abhängigkeiten zueinander.
Wie kann ich dies tun? Kann ich dies tun?
- Dies scheint zu sein, im Zusammenhang: stackoverflow.com/questions/386579/...
- Fenstern - ich habe Unterstützung - keine Unterstützung für ELF.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies setzt Voraus, Sie haben den Quelltext auf alle freigegebenen Objekte:
Vorausgesetzt, es gibt kein name-space-Konflikte (was es nicht sein sollte, wenn die beiden co-existieren, wie es ist), wäre es nicht zu furchtbar schwer zu bauen, Sie in ein gemeinsames Objekt.
Wenn die freigegebenen Bibliotheken selbst abhängen code aus einer anderen Bibliothek bestellen ist die Materie. Die eigentliche Arbeit ist nur immer die Abhängigkeiten erarbeitet, die im makefile. Ich habe nie gesehen, wie zirkuläre Abhängigkeiten in SO erfolgreich link, so bezweifle ich, dass Sie Sie haben, um mit zu beginnen. I. e. foo() hängt davon ab, bar (), die abhängig von foo().
Habe ich mehrere Male gemacht, obwohl die Bibliotheken selbst waren trivial. Ich nahm Teile, die vom ustr (string handler), ein Konfigurations-file-handler, einige andere benutzerdefinierte Parser und andere utility-Funktionen und erstellt eine benutzerdefinierte mash up.
Der eigentliche Schmerz bringt im upstream Verbesserungen an jedes mal, die Sie kombiniert haben Sie, aber ich bin nicht sicher, ob das ein Problem für Sie.
Also, wenn Sie haben:
Wo:
... und die Reihenfolge ist richtig .. der rest ist ziemlich einfach. Hinweis: ich war nicht im header, deps, das jeder ein wenig anders. Sie sind wichtig, wenn man mash-ups, obwohl, so würden Sie wahrscheinlich wollen vermeiden, kompilieren Sie die gesamte Bibliothek jedes mal, wenn ein header-änderungen.
NB:, Wenn alle drei Projekte sind mit autotools .. Ihre Aufgabe gerade exponentiell leichter (oder schwerer), je.
, Wenn Sie NICHT den source-code
Wenn es eine statische version der Bibliothek, können Sie extrahieren Sie die Objekte und verwenden Sie Sie. I. e.:
Natürlich seine ganz ein bisschen komplizierter als dargestellt.
Habe ich noch nie ausprobiert und weiß nicht, wie zu handhaben SOs, die main () - wenn es um die Verknüpfung in diesem Fall.
.so
ist wesentlich kleiner als die Menge der Arbeit ist es zu ändern, das make-Skript. Ich habe ursprünglich versucht, es zu bauen, in einer statischen Bibliothek verwenden und diese mit meinen eigenen code zu bauen.so
- Datei. Leider ist die static-build von ICU4.2.1 scheint kaputt zu sein.