Wenn es eine andere Bibliothek gäbe, aber glibc ... Ich denke, es kann keine schnellen Wege geben, weil die glibc der Ort ist, an dem das Zeug "hart codiert" ist. Der glibc passt zu Ihrer Kernel-Version und sein Loader ist die Instanz, mit der tatsächlich das Richtige (TM) getan wird LD_LIBRARY_PATH
.
Vielleicht ist der richtige Weg:
LD_LIBRARY_PATH="/opt/myglibc/;..." /opt/myglibc/ld-linux.so.2 the_program`
Ich bin mir jedoch nicht sicher, ob dies funktioniert.
Ich denke jedenfalls, dass die Verwendung einer alternativen glibc ein noch nicht implementiertes Framework erfordert, da Suchpfade manchmal verkabelt sind und die glibc immer zu Ihrem Betriebssystem / Kernel passen muss, sodass es keine generischen Binärdateien geben kann, IMO. Debians Multiarch zeigt, dass es nicht trivial ist, aber dennoch getan werden kann. Wenn man neben der Zielarchitektur noch andere Möglichkeiten hätte, Bibliotheken zu erkennen.
Die Website gab mir nur diesen anderen verwandten Thread:
Dort enthält die akzeptierte Antwort einen Link zu einem Programm namens rtldi , mit dem sich das Problem mit glibc zu lösen scheint. Es ist aus dem Jahr 2004, daher funktioniert es möglicherweise nicht mehr direkt mit dem Linker, aber es lohnt sich vielleicht, es zu untersuchen. Seine Quelle ist GPLv2.
Jehova, Jehova
Ein Freund von mir kam einmal auf die Idee, dass die tatsächliche Nutzung von Shared Libraries überbewertet wird. Und er hat einen Punkt: Shared Libraries sind gut, um den Arbeitsspeicher Ihres Computers nicht mit Duplikaten zu füllen, aber in Anbetracht der einzelnen Anwendungsinstanz sind dies nur einige MB.
Es gibt nur wenige Anwendungen, in denen wir auf Aktionen zurückgreifen würden, z. B. die Bereitstellung eines eigenen Glibc. Um uns eine lange Analyse zu ersparen, bezeichnen wir sie als "Sofortanwendungen", die für sich genommen von Nutzen sind, um die Arbeit zu erledigen. Beispielsweise ermöglichen Webbrowser, E-Mail-Benutzeragenten, Büroanzüge und Musikplayer dem Benutzer, das zu bekommen, was er will, und es gibt nur wenige Instanzen pro Benutzer. Um die andere Seite zu porträtieren, sind Systemdienste, Fenstermanager und sogar ganze Desktopumgebungen alle sehr wichtig, aber nur unterstützend und oft nicht ausreichend ungewöhnlich oder kritisch, so dass die Leute bereit wären, ihnen ihre ganz eigene Übersicht zu geben.
Die Anzahl der "Sofortanwendungen" ist eher gering, absolut pro Benutzer und im Vergleich zu den heutigen "grundlegenden" Betriebssystemen und DEs relativ gering. Wenn Sofortanwendungen wie Chrome oder Firefox statisch kompiliert würden, würde der zusätzliche Speicherbedarf für ein durchschnittliches System einige 100 MB betragen. Ein Argument, das auf den heutigen vielen GB-Systemen nicht sehr weit verbreitet ist, sodass eine statische Verknüpfung für sofortige Anwendungen eine Option sein kann.
Es gibt auch die Konzepte von Swap Space und SSDs, die ein extrem schnelles Auslagern ermöglichen, wodurch auch der gestiegene Speicherbedarf bewältigt werden kann.
Das hier diskutierte Problem mit glibc ist durch statisches Verknüpfen nicht wirklich gelöst, aber für Anwendungen wie Webbrowser ist eine Art eigenständiges Distributionsformat denkbar, bei dem das X-Protokoll, ein Sound-Daemon und einige Kernel-Methoden die einzige Schnittstelle sind. Der Vorteil wäre weniger Inkompatibilitäten der Bibliotheksversion.
du -h /lib
), bedenken Sie, dass, wenn diese statisch kompiliert würden, diese RAM-Menge für jede erforderlich wäre und jede mit ihnen kompilierte Anwendung. Wenn also z. Sie haben zwei Apps, die denselben Bibliotheksstapel verwenden. Jetzt benötigen Sie doppelt so viel Speicher. Drei Apps? Dreimal so viel.