[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-team] ld.so (was: WINDOW MAKER)



> Justement mettre ldconfig
> a jour, ca veut dire quoi ?
> sorry mais c'est du chinois
> pour moi
> Merci 

ld est le linker, le linker que tu utilises au moment de linker des objets pour faire
un éxécutable. Néanmoins, tous les objets et librairies ne sont pas inclues dans l'
éxécutable (ça nous ferait des éxécutables de qqes MB à chaque fois ;)).
Il y a aussi des "shared libs" (des librairies partagées) qui, elles, sont "attirées"
(utilisées, si tu veux) par les éxécutables au moment de l'_éxécution_ (pas du link).
Pour pouvoir faire ça, il faut le ld.so (le "dynamic linker") - sous Linux, c'est
/lib/ld.so
Maintenant, ld.so maintient une liste de répertoires qui contiennent des shared libs
(les shared libs portent un nom du genre lib*.so ou lib*.so.* (avec une version derrière)
contrairement aux libs statiques (qui, quant à elles, sont complètement intégrées
(càd linkées statiquement) aux éxécutables au moment du link) qui portent un nom
lib*.a), typiquement /lib, /usr/lib, /usr/X11R6/lib, /opt/gnome/lib, /opt/kde/lib, etc...
Cette liste est configurable dans le fichier /etc/ld.so.conf (un fichier texte, que
tu peux éditer avec vi ou emacs, etc...): il contient cette liste de répertoires...
ld.so maintient un cache /etc/ld.so.cache afin d'accélérer au maximum le chargement
dynamique de libraries partagées (des DLL, quoi).
Seulement, quand tu modifies le fichier /etc/ld.so.conf, il faut que ld.so remette
ce cache à jour, ce que tu peux lui dire de faire grâce à la commande ldconfig.
Donc, tu tapes simplement

ldconfig

en tant que root et c'est tout...
Si tu veux un peu voir ce qu'il fait, tu peux aussi faire ldconfig -v, alors tu vois la
liste de répertoires qu'il parcourt pour mettre son cache à jour.
Note que les répertoires /lib et /usr/lib n'ont pas besoin d'être dans /etc/ld.so.conf
parce qu'ils sont automatiquement inclus par ld.so ;)

Voilà... j'espère que c'était assez clair, sinon n'hésite pas à poser plus de questions... ;))

Très concrètement, ton problème avec Window Maker (et libPropList), c'est que si tu as
installé libPropList (ou les libs de Window Maker: libwraster, etc...) dans /usr/local/lib
et que /usr/local/lib n'est pas dans /etc/ld.so.conf, ld.so ne peut pas trouver ces libs!
(comprende ? ;))
Donc, il te suffit d'ajouter /usr/local/lib (ou /usr/local/X11R6/lib, ...) dans /etc/ld.so.conf
et de taper
ldconfig

  -o)  Pascal Bleser        | UNIX *is* user friendly.
  /\\  C++/UNIX Development | It's just selective about
 _\_v  ATOS Payment Systems | who its friends are...
pbleser@atos-group.com---------------------------------
---------
This message was sent by Majordomo 1.94.3. Please repport problems to
manu@rtfm.be. If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.