【发布时间】:2010-03-31 10:45:13
【问题描述】:
我正在尝试使用以 .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 文件。它不起作用,当我尝试使用此库 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)'
你会怎么做?我怎样才能找到这些符号是在哪个库中导出的?
【问题讨论】:
标签: c++ linux linker debian dynamic-linking