Si vous définissez LD_PRELOAD
au chemin d'un objet partagé, ce fichier sera chargé avant toute autre bibliothèque (y compris le runtime C, libc.so
). Donc, pour exécuter ls
avec votre malloc()
spécial mise en œuvre, procédez comme suit :
$ LD_PRELOAD=/path/to/my/malloc.so /bin/ls
Vous pouvez remplacer les symboles dans les bibliothèques de stock en créant une bibliothèque avec les mêmes symboles et en spécifiant la bibliothèque dans LD_PRELOAD
.
Certaines personnes l'utilisent pour spécifier des bibliothèques dans des emplacements non standard, mais LD_LIBRARY_PATH
est mieux à cette fin.
Avec LD_PRELOAD
vous pouvez donner la priorité aux bibliothèques.
Par exemple, vous pouvez écrire une bibliothèque qui implémente malloc
et free
. Et en les chargeant avec LD_PRELOAD
votre malloc
et free
seront exécutés plutôt que les standards.