【发布时间】:2013-10-15 16:48:07
【问题描述】:
所以我现在迫切希望找到解决此问题的方法。我正在 Ubuntu 32 位中编译一个共享库 .so (尝试在 Debian 和 Ubuntu 64 位下进行,但也没有工作)
每次尝试加载我的插件时,我都会收到:/usr/lib/libstdc++.so.6: version ``GLIBCXX_3.4.15' not found。
这是我收到此错误的原因:
- 安装最新的 Ubuntu 32 位
- sudo apt-get install build-essential
- 编译并加载我的插件 (.so)
以下是我找到并尝试过的一些链接,但没有一个对我有用:
(我的老问题:我在发布此问题几天后以某种方式修复了它,但我不记得我是如何做到的)
Another user with the same problem
我看到有些人通过将 libstdc++(我认为)移动到某个目录然后将 idk what 指向或链接到该目录来修复它,但这让我感到困惑。
有人知道解决办法吗?
(编辑:)
- 在终端中运行:strings /usr/lib/libstdc++.so.6 | grep GLIBC 给我:strings '/usr/lib/libstdc++.so.6': No such file。这可能是问题吗?如果是这样,我该如何安装这个库?
(Edit2:) 其他人知道解决方案吗?
(Edit3) 仍然需要解决方案。有没有办法查看共享库是在哪个发行版上编译的?我知道我不久前曾经编译过同一个库,但不记得了!!
(Edit4)ldd my_lib_.so 给我:
linux-gate.so.1 => (0xb77d7000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76c1000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb76a4000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74fa000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb74ce000)
/lib/ld-linux.so.2 (0xb77d8000)
ldd program_im_loading_so_into 给我:
linux-gate.so.1 => (0xb77d8000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb77c0000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb77a5000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb76bb000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb768f000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7672000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb74c9000)
/lib/ld-linux.so.2 (0xb77d9000)
运行strings /usr/lib/i386-linux-gnu/libstdc++.so.6 | grep GLIBCXX 给了我:
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH
最后这是我的 gcc 版本:
`gcc version 4.6.4 (Ubuntu/Linaro 4.6.4-1ubuntu1~12.04)`
【问题讨论】:
-
如果你对你的库运行“nm”,它是否显示对 GLIBC3.4.15 的任何依赖关系?您是否尝试安装使用旧 glibc 版本构建的旧 libstdc++?
-
嘿,我在运行 nm 时得到了这个:
U_ZNSt8__detail15_List_node_base7_M_hookEPS0_@@GLIBCXX_3.4.15 U _ZNSt8__detail15_List_node_base9_M_unhookEv@@GLIBCXX_3.4.15,我刚刚安装了所有以 6.x.x 结尾的库(在 ubuntu 应用程序管理器中找到),甚至安装了 libstdc++5,但是它仍然无法正常工作。不断出现同样的错误 -
也许你在不寻常的目录中有一些额外的 libstdc++ 副本?在 debian 上,您应该将它放在 /usr/lib/i386-linux-gnu
-
嗨。我运行
locate libstdc++.so.6并得到以下信息:/usr/lib/i386-linux-gnu/libstdc++.so.6和/usr/lib/i386-linux-gnu/libstdc++.so.6.0.18。我猜这意味着异常目录中没有任何其他 libstdc++? -
您是否将您的插件与一些在别处编译的目标文件链接?此外,您是否在尝试加载插件之前以任何方式修改环境?您确定您使用相同的编译器来编译插件和加载它的程序吗?
LD_DEBUG=all program_im_loading_so_into的输出是什么?