Lassen Sie mich das Problem an einem Beispiel erläutern. Ich benutze ein altes Programm in meiner täglichen Arbeit, wie zum Beispiel xfig und pdfedit .
Jetzt sind diese Programme ziemlich alt und werden nicht zu oft aktualisiert. Ich befürchte, dass sie eines Tages nicht mehr funktionieren werden, weil eine Bibliothek oder ein inkompatibles Update fehlt.
Wenn das Programm jetzt auf einem laufenden System einfach zu kompilieren ist, ist die Lösung praktisch: Versuchen Sie, die Quelle ein wenig zu hacken und statisch zu kompilieren vorhersehbare Zukunft. Dies scheint der Fall zu sein xfig
und ich werde es so schnell wie möglich versuchen.
Aber zum Beispiel pdfedit
hängt es von Qt3 ab, und das Einrichten eines Systems zum Kompilieren ist zu diesem Zeitpunkt ziemlich komplex. Glücklicherweise kann es jetzt ausgeführt werden, da die benötigte Bibliothek mit nichts in Konflikt steht. Das kann sich aber in Zukunft ändern, deshalb möchte ich dieses Problem lösen:
Wie kann ich eine statische Binärdatei (oder ähnliches) erstellen, wenn ich unter Ubuntu eine dynamische Bibliothek, aber keinen Quellcode habe?
Ich suchte herum. Eine Möglichkeit ist statifier (2), aber es gibt viele Probleme mit der Adress-Randomisierung , also ist es ein Nein-Nein. Die unfreie Version, Ermine , scheint zu funktionieren, aber ich würde wirklich eine Open-Source-Option vorziehen.
Eine andere Möglichkeit besteht darin, Docker oder ein ähnliches Verpackungssystem zu verwenden. Aber alle Tutorials, die ich gefunden habe, sind ganz auf RedHat ausgerichtet . und ehrlich gesagt ist es ziemlich komplex zu folgen.
Fußnoten :
(1) ist nicht so verrückt. Ich benutze zum Beispiel ein statisches ffmpeg , funktioniert einwandfrei und ohne Kompatibilitätsprobleme ...
(2) Informationen zum Kompilieren statifier
finden Sie unter /programming/23498237/compile-program-for-32bit-on-64bit-linux-os-causes-fatal-error
linux-vdso.so.1
ist nirgends zu sehen, ich nehme an, es liegt im Kernel, richtig?man 7 vdso
: "Das" vDSO "(Virtual Dynamic Shared Object) ist eine kleine gemeinsam genutzte Bibliothek, die der Kernel automatisch dem Adressraum aller User-Space-Anwendungen zuordnet."Ein Vorschlag zum Statifikator :
Wenn die Adressraum-Layout-Randomisierung (ASLR) fehlschlägt, müssen Sie sie nicht für den gesamten Computer ausschalten. Sie können es nur für diesen Prozess deaktivieren:
Dieser Befehl wird mit deaktiviertem zufälligem Layout ausgeführt (es muss kein Root sein).
quelle
statifier
...xfig_statified
immernoch core dumps ... schade. Danke trotzdem.