1

.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。*ファイルのみ。

(ln -sを使用して)libstdc++-libc6.1-1.so.2をlibstdc++。so.6ファイルにリンクしようとしました。これは機能しません。このライブラリを使用して.oファイルをldしようとすると、シンボルのバッチが不足しているようです。

/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)'

あなたならどうしますか ?これらのシンボルがエクスポートされているライブラリをどのように見つけることができますか?

4

2 に答える 2

1

次の線に沿って何かを試してください:

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

次に、を探しistrstreamます。これはかなり遅いかもしれません。

于 2010-03-31T10:49:10.080 に答える
1

グーグルはあなたが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ルートルート2562402000-02-1917:41 /usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
lrwxrwxrwx1ルートルート302010-03-3115:54 /usr/lib/libstdc++-libc6.1-1.so.2-> libstdc ++-2-libc6.1-1-2.9.0.so
lrwxrwxrwx1ルートルート192010-01-2110:13 /usr/lib/libstdc++.so.6->libstdc++。so.6.0.13
-rw-r--r--1ルートルート9586282010-01-0811: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

于 2010-03-31T11:13:14.660 に答える