我正在尝试使用以.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++ 6软件包仅提供libstdc++。so。*文件。

我尝试将libstdc++-libc6.1-1.so.2链接(使用ln -s)到libstdc++。so.6文件。它不起作用,当我尝试使用此lib ld .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)'

你会怎么做 ?如何找到这些符号在哪个lib中导出?

最佳答案

谷歌说你需要libstdc++ 2.9-glibc2.1

http://linux.derkeiler.com/Mailing-Lists/Debian/2005-07/0755.html

尽管它来自过时的debian版本,但我不确定安装它是否是一个好主意。

编辑

其实我是出于好奇而尝试过的。它没有任何危害,并且似乎可以与标准libstc++。so共存

debian:/ home / dmitry#ll / usr / lib / \ * stdc \ *
-rw-r--r-- 1个根根256240 2000-02-19 17:41 /usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
lrwxrwxrwx 1根根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根根19 2010-01-21 10:13 /usr/lib/libstdc++.so.6-> libstdc++。so.6.0.13
-rw-r--r-- 1个根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.debdpkg -i libstdc++2.9-glibc2.1_2.91.66-4_i386.deb

关于c++ - 在Debian/squeeze上的libstdc++中查找丢失的符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2552165/

10-13 08:37