Pour connaître les dépendances d'un exécutable il y a la commande ldd :
Par exemple un "ldd /bin/echo" sur mon système donne :
Code :
- $ ldd /bin/echo
- linux-gate.so.1 => (0xb7761000)
- libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb759f000)
- /lib/ld-linux.so.2 (0xb7762000)
|
Lors de l'exécution du programme, le système va chercher des fichiers nommés "linux-gate.so.1", "libc.so.6" et "ld-linux.so.2" dans les entrepôts de dépendances configurés sur le système.
Si je fais "ls -lh /lib/i386-linux-gnu/libc*", j'ai ça :
Code :
- -rwxr-xr-x 1 root root 1,7M sept. 30 16:38 /lib/i386-linux-gnu/libc-2.15.so
- ...
- lrwxrwxrwx 1 root root 12 sept. 30 16:38 /lib/i386-linux-gnu/libc.so.6 -> libc-2.15.so
|
"libc.so.6" est un lien symbolique vers "/lib/i386-linux-gnu/libc-2.15.so"
Si une lib d'une certaine version mineure ou majeure peut se substituer à la version "standard du système", le lien symbolique doit exister. Sinon il est possible de créer un lien symbolique à l'emplacement de l'exécutable utilisateur, faire pointer ce lien vers une lib et modifier/créer LD_CONFIG_PATH pour que le système utilise le lien symbolique. Après il faut tester le programme pour voir si la lib est compatible et qu'il n 'y a pas de problèmes.
Message édité par czh le 12-12-2013 à 11:02:46