jipe a écrit :
quelle glibc-2.1? en rpm? compilée? rpm de compatibilité?
où l'as tu mise?
Je crois en fait que ces librairies se sont installées à partir des CD de la distrib...
J'ai ainsi:
/usr/i386-glibc21-linux/libc5/
Je suis perdu dans toutes ces nomenclatures et numérotation de librairies, je pense que la première est pour de vieilles machines ??
avec une installation normale, avec les rpm, les librairies se trouvent en /usr/lib
xmrg et mopac doivent chercher libc.so. pour démarrer. libc.so est dans /usr/lib et est un lien vers libc.so.6, lui-même dans /usr/lib. mais il leur faudrait libc.so.5!
Tu m'as donné l'idée de comparer les libc.so.5 de mes 2 distributions.
Tous les deux sont des liens vers libc.so.5.3.12 (les mêmes numéros dans les deux cas...)
pourtant l'un fait 699832 octets et l'autre, sur Mdk8.1, seulement 614576 octets
il est possible d'avoir plusieurs versions de glibc et donc de faire tourner des applications sur ces différentes versions. la version "système" dans un répertoire accessible par LD_LIBRARY_PATH, et les autres dans des répertoires différents et si possibles masqués pour éviter les embrouilles. par ex: /usr/local/glibc-2.1
pour lancer le programme, une solution consiste à lui écrire un petit script de lancement du genre:
#!/bin/bash
export LD_LIBRARY_PATH=/usr/local/glibc-2.1/lib:$LD_LIBRARY_PATH
/usr/local/bin/<programme>
OK, cela paraît logique, j'ai fait ce script où j'essaie de charger d'abord les librairies de /usr/i486-linux-libc5/lib/ avant de chercher ailleurs.
Dans un premier temps j'avais tjrs le même pb persistant de fichier non trouvé...

En recopiant libc.so.5.3.12 de l'ancienne distribution à la place du libc.so.5.3.12 plus petit de Mdk8.1 (une hérésie sans doute, mais au pt où j'en suis...) enfin çà change : cette fois on dirait que ma commande du script
export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib/:$LD_LIBRARY_PATH
précédant l'invocation du prg est ignorée.

En effet tjrs d'après strace, xmgr ouvre d'abord
/etc/ld.so.cache
puis les librairies du répertoire /lib et en particulier /lib/libc.so.6

Au contraire, sur les autres machines, après ouverture de /etc/ld.so.cache
xmgr lit les librairies de
/usr/i486-linux-libc5/lib/
d'abord Xmu, Xt, Xext, X11, SM, ICE ... avec suffixe .so.6
puis la librairie mathématique libm.so.5  (tiens, pas .so.6 ...)
puis libc.so.5 (OK, pas libc.so.6, et dans ce cas tu as raison  çà marche!!)

En définitive, sur Mdk8.1 je n'arrive pas à forcer xmgr à lire libc.so.5 plutôt que libc.so.6 rien qu'en exportant LD_LIBRARY_PATH au niveau du script... Qu'est-ce-qui peut bien lui donner l'idée d'aller chercher les lib dynamiques dans /lib alors que ce répertoire n'est pas dans LD_LIBRARY_PATH ?? (j'ai même fait carrément ôté tous les autres répertoires de la liste autres que /usr/i486-linux-libc5/lib/).
J'ai supprimé les fichiers /etc/ld.so.cache et /etc/ld.so.conf mais cela ne résout rien...

J'espère que l'un de vous (jipe?) a une réponse parce que là je sèche vraiment...

A demain...

-- 
Didier Mathieu
CEA - Le Ripault
BP 16
37260 Monts
+33 02 47 34 41 85
 


Répondre à