【问题标题】:`GLIBCXX_3.4.15' not found but it is there`GLIBCXX_3.4.15' 未找到,但它在那里
【发布时间】:2021-01-06 21:24:48
【问题描述】:

我收到了错误

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found

我已经安装了以下 rpm 文件:https://centos.pkgs.org/6/nux-dextop-i386/chrome-deps-stable-3.11-1.i386.rpm,因为 centOS6 有 GLIBCXX_3.4.14GLIBCXX_3.4.15 版本。

[cloudera@quickstart Downloads]$ strings
/opt/google/chrome/lib/libstdc++.so.6 | grep GLIBC
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
GLIBC_2.3
GLIBC_2.0
GLIBC_2.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.3.2
GLIBC_2.2
GLIBCXX_DEBUG_MESSAGE_LENGTH

我已将此文件夹链接到 libstdc++.so

[cloudera@quickstart DataGenLinux]$ ln -s /opt/google/chrome/lib/libstdc++.so.6 libstdc++.so.6
[cloudera@quickstart DataGenLinux]$ ./myFile.out -h 
./DataGen.out: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not
found (required by ./DataGen.out)
./DataGen.out: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not**
found (required by ./DataGen.out)

我已经定义并导出了 LD_LIBRARY_PATH。

[cloudera@quickstart DataGenLinux]$ echo $LD_LIBRARY_PATH
/opt/google/chrome/lib/libstdc++.so.6

已解决

 mv /usr/lib64/libsrdc++.so.6 /usr/lib64/libsrdc++.so.6_bkp
 mv /opt/google/chrome/lib/libstdc++.so.6 /usr/lib64/libsrdc++.so.6

这解决了我的问题

【问题讨论】:

  • 请不要只是从互联网上的随机位置下载随机库来尝试解决问题。这通常只会导致更多问题。
  • 另外,LD_LIBRARY_PATH 应该设置为仅用于调试目的。如果您出于临时链接特定库二进制文件用于特定调试运行之外的任何其他原因进行设置,则您的系统已损坏。

标签: c++ libstdc++ libc++


【解决方案1】:

LD_LIBRARY_PATH 应该指向路径,而不是库。

这应该适合你:

LD_LIBRARY_PATH=/opt/google/chrome/lib:$LD_LIBRARY_PATH ./myFile.out -h

或者,

export LD_LIBRARY_PATH=/opt/google/chrome/lib:$LD_LIBRARY_PATH
./myFile.out -h

请注意,这不涉及任何符号链接或替换系统库。

由于 libstdc++(以及 glibc)是向前兼容的,因此最好针对您想要支持的最旧版本进行编译/链接(当然,如果您可以控制 myFile.out)。

最好为您需要的那个版本的 libstdc++ 寻找合适的 CentOS6 软件包。但即便如此,您仍需要将加载程序指向它,因为它不会取代系统/usr/lib64/libstdc++.so.6,而是与它并存。 您没有提供太多背景信息,所以我不确定您到底想用什么来完成。

【讨论】:

  • 谢谢!我正在尝试运行 BigBench 基准测试,第一步是使用以下 .out 文件github.com/t-ivanov/BigBenchV2/blob/master/DataGenLinux/… 生成数据
  • 我已经更新了我的问题,很遗憾,您的建议不起作用。
  • 你下载的 libstdc++.so 是 32 位还是 64 位?你为什么还要使用 CentOS?这是为服务器或稳定的公司机器设计的东西,而不是你的日常驱动程序。
  • 我找不到任何其他提供所需版本的库...
  • 它是 64 位的。
猜你喜欢
  • 2013-07-29
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多