我将GCC编译器从GIT repo更新到版本11。现在我的测试代码(GoogleTest/GoogleMock)正在抱怨GLIBCXX_3。4.29找不到这不是一个重复,请重新打开答案张贴在:* Understanding the gcc version and the GLIBC, GLIBCXX versions in more detail (2 answers) * 没有回答这个问题。
连接器错误为:/usr/lib/x86_64-linux-gnu/libstdc++.so.6: version GLIBCXX_3.4.29 not found
strings /usr/lib/x86_64-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_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_DEBUG_MESSAGE_LENGTH
哪里可以找到34.29?
6条答案
按热度按时间lsmd5eda1#
完成此操作后,请确保运行以下命令:
此外,请确保为正确的GLIBCXX版本安装了必要的依赖项。
也可以试试@bobka的快速解决方案
rbl8hiat2#
在构建GCC并安装二进制文件之后,软链接/usr/lib/x86_64-linux-gnu/libstdc++。所以.6没有更新到最新版本。我的仍然指向上面评论中提到的以前的版本。在GCC构建目录下,我找到了GLIBCXX_3。4.29编译目录并将库复制到/usr/lib/x86_64-linux-gnu并更新了软链接。
sshcrbum3#
快速解决方案
在构建项目之前运行
export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
以修复链接问题。考虑将这一行添加到~/.bashrc
中,使其永久化问题解答
哪里可以找到34.29?
当您从源代码安装gcc时,我例如,运行
sudo make install
,你可能会看到这样的消息:因此,所需的GLIBCXX版本包含在/usr/local/lib 64/libstdc中。so.6(它是到libstdc的符号链接。(6.0.29)您可以通过运行
strings /usr/local/lib64/libstdc++.so.6 | grep GLIBCXX_3.4.29
来验证这一点解决方案说明
虽然你可以手动更新符号链接,但我不认为这是一种安全和推荐的方式。GCC建议使用以下选项,这些选项在安装过程中显示在同一条消息中:
如果您碰巧想要链接给定目录LIBDIR中已安装的库,则必须使用libtool并指定库的完整路径名,或者在链接过程中使用`-LLIBDIR'标志并至少执行以下操作之一:
就我个人而言,我发现修改LD_LIBRARY_PATH是最方便的方法(参见上面的快速解决方案)
nom7f22z4#
当我跑的时候
我可以清楚地看到GLIBCXX_3。4.29
当我搜索
它返回了许多路径-但具体来说,我的 Torch 康达环境有一个副本。..
我只是删除了多余的文件
现在事情又开始工作了(暂时)。
pdsfdshx5#
我转到/usr/lib/x86_64-linux-gnu/文件夹,复制libstdc++。so.6.0.29并将其粘贴到/home/xx/anaconda 3/bin/和/home/xx/anaconda 3/lib,它可以工作。
bis0qfac6#
如果你试图构建一个Dockerfile,我最终从
ubuntu:20.04
切换到ubuntu:22.04
作为基础镜像,以获得正确的GLIBCXX_
版本。