我尝试使用一个程序但出现以下错误。
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found
在 /usr/lib64 下,我看到的 libstdc++ 是 libstdc++.so.6.0.13(和一个软链接)。
我strings libstdc++.so.6.0.13 | 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_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH
我cat /etc/redhat-release
得到了
Red Hat Enterprise Linux Workstation release 6.4 (Santiago)
所以问题是我应该怎么做才能解决这个问题。我应该安装一些新的软件包吗?如果是,我应该安装哪些?
答案1
您需要安装较新版本的 GCC,如果它是 CentOS 中的单独软件包,则需要安装较新版本的 gcc-libs。不幸的是,我认为 CentOS 存储库中不会提供这些较新的版本。
一个选项是只为你的用户帐户安装最新版本的 GCC(即不要在整个系统范围内安装,这将有助于避免一些潜在的麻烦)。你可以很容易地使用地球科学研究理事会,但当然您也可以只下载 GCC 源存档并为选项指定非标准目录--prefix
。然后,当您构建新软件时,您必须指定LDFLAGS="-L /path/to/your/gcc/libs -L/usr/lib (etc)"
,CFLAGS="-I /path/to/your/gcc/includes -I /usr/include (etc)"
可能还有类似 的内容CXX=/path/to/your/g++
。当您运行程序时,您将需要LD_LIBRARY_PATH=/path/to/your/gcc/libs
在您的环境中使用。
或者,您可以安装包含更新软件的发行版,但我知道这并不总是可行的。
答案2
我遇到了同样的问题,所以我使用了这个链接glibcxx_3.4.15并手动将内容放入所需文件夹(/usr/lib 文件夹)。之后,我能够在应用程序上运行 gdb。希望这能有所帮助。
编辑:选择 ALT Linux 选项卡下的链接并下载二进制包(这些包更通用,可以在各种发行版上使用)。
例如:libstdc++6-4.7.2-alt7.i586.rpm - GNU 标准 C++ 库
这将包括 libstdc++.so.6.0.17 以及 libstdc++.so.6.0.15。