Le mardi 01 juin, à 20h15 (-0000), shaddai@??? a écrit :
> >> /usr/lib/libdl.a(dlsym.o): In function `doit.2':
> >> dlsym.o(.text+0x22): undefined reference to `_dl_default_scope'
>
> > $ nm /usr/lib/libdl.a | grep _dl_default_scope
> > U _dl_default_scope
> > U _dl_default_scope
> J' ai la meme chose que toi.
>
> > $ nm /lib/libc.so.6 | grep _dl_default_scope
> > U _dl_default_scope
> Par contre , je n' ai aucune réponse a cette commande.
>
> > $ nm /lib/ld-linux.so.2 | grep _dl_default_scope
> > 0000a190 D _dl_default_scope
> Celle ci non plus, rien de semblable.
Les fichiers /lib/libc.so.6 et /lib/ld-linux.so.2 font partie de la
glibc. Moi j'utilise encore la glibc-2.0 dans laquelle _dl_default_scope
est défini (dans /lib/ld-linux.so.2) et utilisé (dans /lib/libc.so.6).
Toi tu utilises une glibc (la 2.1 j'imagine) qui ne connaît pas ce
symbole. Nous utilisons tous les deux un fichier libdl.a qui a besoin
que ce symbole soit défini.
En bref ça veut dire que notre /usr/lib/libdl.a (c'est peut-être le
même) est adapté à ma glibc mais pas à la tienne. Il faudra probablement
que tu mettes à jour le paquetage qui t'a fourni ce fichier. Chez moi
c'est glibc-devel-2.0.7-29 (mais c'est une RH).
Si jamais ton /usr/lib/libdl.a vient d'un paquetage qui est censé être à
jour avec ta version de la libc, alors c'est qu'il y eu un bogue de
packaging de la libc... et tu es dans la m...
En désepoir de cause, tu peux essayer de regarder si ce symbole n'est
pas défini ailleurs, par exemple en faisant
for f in `find /lib -type f -name '*.so*' -o -name '*.a'`; do
if nm $f 2> /dev/null | grep -q _dl_default_scope; then
echo "$f :"
nm $f | grep _dl_default_scope
fi
done
--
Edgar Bonet Orozco
Lab. Louis Néel -- CNRS Tel : +33 476-88-90-89
BP 166 Fax : +33 476-88-11-91
38042 Grenoble cedex 9 e-mail : bonet@???