Я пытаюсь использовать предварительно скомпилированную библиотеку, предоставленную как файл .so.
Этот файл динамически связан с несколькими библиотеками:
$ 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)
К сожалению, в Debian / squeeze нет файла libstdc ++ - libc6.1-1.so. *.
Только файл libstdc ++. So. *, Предоставляемый пакетом libstdc ++ 6.
Я пытался связать (используя ln -s) libstdc ++ - libc6.1-1.so.2 с файлом libstdc ++. So.6. Это не работает, кажется, что мне не хватает пакета символов, когда я пытаюсь открыть мои .o файлы с помощью этой библиотеки.
/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)'
Что бы вы сделали? Как мне узнать, в какую библиотеку экспортируются эти символы?