2010-03-31 96 views
1

我试图使用一个预编译的库作为.so文件提供。在Debian/squeeze上查找libstdC++中缺失的符号

此文件是动态链接对几个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) 

不幸的是,在Debian中/挤,没有的libstdC++ - libc6.1-1.so *文件。 只有libstdC++ 6软件包提供的libstdC++。so。*文件。

我试图链接(使用ln -s)libstdC++ - libc6.1-1.so.2到libstdC++。so.6文件。它不起作用,当我试图用这个lib来提供我的.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)' 

你会做什么?我如何找到这些符号在哪个库中导出?

回答

1

谷歌说,你需要的libstdC++ 2.9-glibc2.1

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

虽然从过时的debian发行的,我不知道,如果是这样的安装是个好主意。

编辑

其实我尝试过了好奇。它没有做任何伤害,而且似乎也与标准libstc共存++。所以

 
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

谢谢你的回答。但我确实同意:使用旧版Debian发行版中的oldlib非常可怕。 – madflo 2010-03-31 12:22:44

+0

请看我的更新 – 2010-03-31 13:03:57

+0

它也在这里工作......好主意! – madflo 2010-03-31 14:02:51

1

试试沿着线:

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

然后追捕istrstream。这可能会很慢。

+0

谢谢你的想法马塞洛,我认为这是最好的办法找到符号(尽管我搜索了/ usr/lib而不是/ lib;)。 不幸的是,我无法找到我正在寻找的符号。 这很混乱。 – madflo 2010-03-31 12:24:23