Finding missing symbols in libstd++ on Debian/squeeze
- by Florian Le Goff
I'm trying to use a pre-compiled library provided as a .so file.
This file is dynamically linked against a few librairies :
$ 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)
Unfortunately, in Debian/squeeze, there is no libstdc++-libc6.1-1.so.* file.
Only a libstdc++.so.* file provided by the libstdc++6 package.
I tried to link (using ln -s) libstdc++-libc6.1-1.so.2 to the libstdc++.so.6 file. It does not work, a batch of symbols seems to be lacking when I'm trying to ld my .o files with this 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)'
What would you do ? How may I find in which lib those symbols are exported ?