#1 Le 16/09/2008, à 14:32
- heuuuuu
[Resolu] L'inverse de la commande ldd
Bonjour,
Je cherche une commande qui ferait l'inverse de ldd : au lieu d'afficher les librairies dont dépend un programme ou une librairies, je souhaiterais afficher qui dépend de telle ou telle librairie.
Est-ce cette commande existe et quelqu'un la connaît-elle ?
J'ai bien peur qu'elle n'existe pas et qu'il faille faire un script pour cela, mais peut être que je me trompe...
Merci d'avance !
Dernière modification par heuuuuu (Le 16/09/2008, à 17:03)
Quand les avions en papier ne partent plus au vent
On se dit que l'bon temps passe finalement...
...comme une étoile filante
http://forum.ubuntu-fr.org/viewtopic.php?id=139410
Hors ligne
#2 Le 16/09/2008, à 16:58
- tiky
Re : [Resolu] L'inverse de la commande ldd
Ça n'existe pas une telle commande, il faut utiliser un script pour faire ça.
Voilà un script reverseldd
#!/bin/bash
ld=$1
dirs=( `echo $PATH | sed -e "s/:/ /g"` )
files=( `find ${dirs[*]} -executable -type f` )
for file in ${files[*]}
do
so=( `ldd $file 2> /dev/null | awk '{print $1}'` )
for s in ${so[*]}
do
if [ $s = $ld ];
then
echo $file
fi
done
done
Exemple d'utilisation:
~ $ ./reverseldd libSDL-1.2.so.0
/usr/bin/yuvplay
/usr/bin/kvm
/usr/bin/glmovie
/usr/bin/y4mhist
/usr/bin/showimage
/usr/bin/lavplay
/usr/bin/plaympeg
/usr/games/bin/exploder
/usr/games/bin/cutter
/usr/games/bin/wesnoth
/usr/games/bin/wesnoth_editor
Pour faire une recherche complète, il faut l'exécuter en root car beaucoup d'exécutables sont protégés en lecture.
Dernière modification par tiky (Le 17/09/2008, à 01:03)
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#3 Le 16/09/2008, à 17:02
- heuuuuu
Re : [Resolu] L'inverse de la commande ldd
Merci
Quand les avions en papier ne partent plus au vent
On se dit que l'bon temps passe finalement...
...comme une étoile filante
http://forum.ubuntu-fr.org/viewtopic.php?id=139410
Hors ligne
#4 Le 17/09/2008, à 01:04
- tiky
Re : [Resolu] L'inverse de la commande ldd
J'ai supprimé un sed inutile dans le script
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#5 Le 17/09/2008, à 16:31
- nicolas66
Re : [Resolu] L'inverse de la commande ldd
lut, je me suis simplement permis de rajouter 2 trucs pr que ca soit prêt à l'emploi :
#!/bin/bash
#########################################################################
# Filename : reverse_ldd.sh #
# Date : 16/09/2008 #
# Author : tiky (forum ubuntu-fr.org, post 252571) #
# License : GPLv2 #
# Description : search programs that use a specific library #
# -> use in root if possible #
# Example : $ ./reverse_ldd.sh libSDL-1.2.so.0 #
# /usr/bin/yuvplay #
# /usr/bin/kvm #
# /usr/bin/glmovie #
# /usr/bin/y4mhist #
# /usr/bin/showimage #
# /usr/bin/lavplay #
# /usr/bin/plaympeg #
# /usr/games/bin/exploder #
# /usr/games/bin/cutter #
# /usr/games/bin/wesnoth #
# /usr/games/bin/wesnoth_editor #
#########################################################################
######### Functions #########
function usage()
{
echo "usage: $0 library_filename" && exit 1
}
######## Input tests ########
if [ $# -ne 1 ]; then
usage
fi
### Variables declaration ###
ld=$1
dirs=(`echo $PATH | sed -e "s/:/ /g"`)
files=(`find ${dirs[*]} -executable -type f`)
########### Core ############
for file in ${files[*]}
do
so=(`ldd $file 2> /dev/null | awk '{print $1}'`)
for s in ${so[*]}
do
if [ $s = $ld ]; then
echo $file
fi
done
done
exit 0
Merci pour ce script
Dernière modification par nicolas66 (Le 17/09/2008, à 23:02)
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne
#6 Le 17/09/2008, à 17:01
- tiky
Re : [Resolu] L'inverse de la commande ldd
De rien , précise qu'il est sous GPLv2, c'est le plus important
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#7 Le 17/09/2008, à 23:02
- nicolas66
Re : [Resolu] L'inverse de la commande ldd
Fait
"The computer was born to solve problems that did not exist before." (B. Gates)
Hors ligne