Si c'était pour n'importe quelle autre bibliothèque, mais la glibc ... Je suppose qu'il ne peut pas y avoir de moyens rapides, car la glibc est l'endroit où les choses sont "codées en dur". La glibc correspond à votre version du noyau et son chargeur est l'instance qui fait réellement la bonne chose (TM) avec LD_LIBRARY_PATH
.
Peut-être que la bonne façon est de:
LD_LIBRARY_PATH="/opt/myglibc/;..." /opt/myglibc/ld-linux.so.2 the_program`
Je ne sais pas si cela fonctionne, cependant.
En tout cas, je pense que l'utilisation d'une glibc alternative nécessite un cadre encore à implémenter, car les chemins de recherche sont parfois câblés et la glibc doit toujours s'adapter à votre OS / noyau, donc il ne peut pas y avoir de binaires génériques, IMO. Le multiarch de Debian montre que ce n'est pas anodin, mais peut encore être fait. Si l'on devait avoir d'autres moyens de discerner les bibliothèques en plus de l'architecture cible.
Le site Web vient de me donner cet autre fil conducteur:
Là, la réponse acceptée comprend un lien vers un programme appelé rtldi , qui semble résoudre le problème de la glibc. C'est à partir de 2004, donc cela peut ne plus fonctionner directement de l'éditeur de liens, mais cela vaut peut-être la peine d'être examiné. Sa source est GPLv2.
Jehova, Jehova
Un de mes amis est venu une fois avec l'idée que l'utilisation réelle des bibliothèques partagées est surfaite. Et il a un point: les bibliothèques partagées sont bonnes pour ne pas remplir la mémoire de votre ordinateur avec des doublons, mais compte tenu de l'instance d'application individuelle, cela ne représente que quelques Mo.
Il n'y a que quelques applications où nous recourrions à des actions telles que leur fournir leur propre glibc. En nous épargnant une longue analyse, appelons-les des "applications immédiates", qui sont utiles par elles-mêmes, dans le sens de faire du travail. Par exemple, les navigateurs Web, les agents d'utilisateur de messagerie, les combinaisons de bureau et les lecteurs de musique permettent à l'utilisateur d'obtenir ce qu'il veut et il n'y a que quelques instances par utilisateur. Pour dresser le portrait de l'autre côté, les services système, les gestionnaires de fenêtres, même des environnements de bureau entiers sont tous très importants, mais ils ne font que prendre en charge et souvent pas assez rares ou critiques, de sorte que les gens seraient prêts à leur donner leur propre glibc.
Le nombre "d'applications immédiates" est plutôt faible, absolument par utilisateur et relativement comparé à ce que les OS et DE "basiques" engendrent de nos jours. Si des applications immédiates, comme Chrome, Firefox étaient compilées statiquement, la mémoire supplémentaire requise pour le système moyen serait de quelques 100 Mo. Un argument qui ne va pas très loin sur les nombreux systèmes GB actuels, donc la liaison statique pour les applications immédiates peut être une option.
Il existe également les concepts d'espace de swap et de SSD qui permettent un swapin / -out extrêmement rapide, ce qui aide également à gérer les besoins en mémoire augmentés.
Le problème de la glibc discuté ici n'est pas vraiment résolu par une liaison statique, mais pour des applications comme le navigateur Web, une sorte de format de distribution autonome est envisageable, où le protocole X, certains démons sonores et certaines méthodes de noyau sont la seule interface. L'avantage serait moins d'incompatibilités de version de bibliothèque.
du -h /lib
), gardez à l'esprit que si elles étaient compilées de manière statique, cette quantité de RAM serait nécessaire pour chaque et chaque application compilée avec eux. Donc si, par exemple. vous avez deux applications utilisant la même pile de bibliothèque, vous aurez maintenant besoin de deux fois plus de mémoire. Trois applications? Trois fois plus. Sans oublier que cela annulerait largement les avantages de la mise en cache .../lib
, dont 202 Mo sont des modules du noyau. Oui,/usr/lib
c'est 4 Go, mais cela ne permet précisément aucune conclusion sur la quantité requise par le programme individuel. Les caches des processeurs ne sont que de quelques Mo. Avec la consommation de mémoire de quelque chose comme un navigateur Web récent, l'impact des binaires liés statiquement sur la mise en cache n'est pas non plus aussi important et diminue avec la quantité de programmes exécutés simultanément; également en raison de caches relativement petites. Mes estimations semblent plus précises que les vôtres. Euh, oui.