2010-03-31 13 views
1

J'essaie d'utiliser une bibliothèque précompilée fournie en tant que fichier .so.Recherche de symboles manquants dans libstdC++ sur Debian/squeeze

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++ - libc6.1-1.so fichier *.. Seul un fichier libstdC++. So. * Fourni par le paquet libstdC++ 6.

J'ai essayé de lier (en utilisant ln -s) libstdC++ - libc6.1-1.so.2 au fichier libstdC++. So.6. Cela ne fonctionne pas, un tas de symboles semble manquer quand j'essaye de ld mes fichiers .o avec 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 dans quelle lib ces symboles sont exportés?

Répondre

1

Google dit que vous avez besoin libstdC++ 2.9-glibc2.1

http://linux.derkeiler.com/Mailing-Lists/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

+0

Merci pour la réponse. Mais je suis d'accord: utiliser un oldlib d'une version plus ancienne et obsolète de Debian est assez effrayant. – madflo

+0

s'il vous plaît voir ma mise à jour –

+0

Cela fonctionne ici aussi ... bonne idée! – madflo

1

Essayez quelque chose le long des lignes de:

`find /lib -type f | xargs nm | less` 

chasser ensuite pour istrstream. Cela pourrait être plutôt lent.

+0

Merci pour l'idée Marcelo, je pense que c'est la meilleure façon de trouve les symboles (bien que j'ai cherché/usr/lib et not/lib;). Malheureusement, je n'arrive pas à trouver les symboles que je recherche. C'est assez déroutant. – madflo