Trouver des symboles manquants dans libstdc ++ sur Debian / retrait obligatoire
-
23-09-2019 - |
Question
Je suis en train d'utiliser une bibliothèque pré-compilé fourni sous forme de fichier .so.
Ce fichier est lié dynamiquement contre quelques bibliothèques:
$ ldd /usr/local/test/lib/libtest.so
linux-gate.so.1 => (0xb770d000)
libstdc++-libc6.1-1.so.2 => not found
libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb75e1000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7499000)
/lib/ld-linux.so.2 (0xb770e000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb747c000)
Malheureusement, dans Debian / squeeze, il n'y a pas libstdc ++ - fichier libc6.1-1.so *.. Seul un libstdc ++. Donc. * Fichier fourni par le package libstdc ++ 6.
J'ai essayé de créer un lien (en utilisant ln -s) libstdc ++ - libc6.1-1.so.2 au libstdc ++ fichier so.6.. Il ne fonctionne pas, un lot de symboles semble manquer quand je suis en train de ld mes fichiers .o cette lib.
/usr/local/test/lib/libtest.so: undefined reference to `__builtin_vec_delete'
/usr/local/test/lib/libtest.so: undefined reference to `istrstream::istrstream(int, char const *, int)'
/usr/local/test/lib/libtest.so: undefined reference to `__rtti_user'
/usr/local/test/lib/libtest.so: undefined reference to `__builtin_new'
/usr/local/test/lib/libtest.so: undefined reference to `istream::ignore(int, int)'
Que feriez-vous? Comment puis-je trouver où lib ces symboles sont exportés?
La solution
Google dit que vous avez besoin libstdc ++ 2.9-glibc2.1
http://linux.derkeiler.com/Mailing -listes / Debian / 2005-07 / 0755.html
Bien qu'il soit de version debian obsolète et je ne suis pas sûr que ce soit une bonne idée de l'installer.
Modifier
En fait, je l'ai essayé par curiosité. Il ne fait pas de mal et semblent coexister bien avec libstc norme ++. So
debian:/home/dmitry# ll /usr/lib/\*stdc\* -rw-r--r-- 1 root root 256240 2000-02-19 17:41 /usr/lib/libstdc++-2-libc6.1-1-2.9.0.so lrwxrwxrwx 1 root root 30 2010-03-31 15:54 /usr/lib/libstdc++-libc6.1-1.so.2 -> libstdc++-2-libc6.1-1-2.9.0.so lrwxrwxrwx 1 root root 19 2010-01-21 10:13 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.13 -rw-r--r-- 1 root root 958628 2010-01-08 11:39 /usr/lib/libstdc++.so.6.0.13
wget http://archive.debian.org/debian/pool/main/e/egcs1.1/libstdc++2.9-glibc2.1_2.91.66-4_i386.deb
dpkg -i libstdc++2.9-glibc2.1_2.91.66-4_i386.deb
Autres conseils
Essayez quelque chose le long des lignes de:
`find /lib -type f | xargs nm | less`
Ensuite, pour chasser istrstream
. Cela pourrait être assez lent.