gpt4 book ai didi

gcc - 未找到 GLIBCXX_3.4.9

转载 作者:行者123 更新时间:2023-12-02 16:06:02 26 4
gpt4 key购买 nike

我有一个关于 libstdc++.so 的问题。

我安装了新版本的 gcc 并尝试编译 C++ 代码。编译工作正常,但是当我尝试执行二进制文件(m5.opt 是它的名称)时,出现以下错误:

build/ALPHA_SE/m5.opt: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by build/ALPHA_SE/m5.opt).

我需要替换libstdc++.so吗?如果是的话,我在哪里可以下载我想要的版本?在 GCC 网站上,他们说 libstdc++ 现在是 gcc 的一部分。

详细信息

海湾合作委员会:我以前有gcc 4.1.2,但我下载了gcc 4.2.4。从解压的 gcc 目录中,我执行了 ./configure;制作; sudo make install`。当我尝试使用gcc或g++编译时,它的默认版本仍然是4.1.2。为了克服这个问题,我替换了一些链接:

mv /usr/bin/gcc /usr/bin/gcc_bak
ln -s /usr/local/bin/gcc gcc
mv /usr/bin/g++ /usr/bin/g++_bak
ln -s /usr/local/bin/g++ g++

GLIBC(++) -- libstdc++:

/usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.8
/usr/local/lib/libstdc++.so -> libstdc++.so.6.0.9
/lib/libc.so.6 -> libc-2.5.so -> libc-2.5.so

Linux 版本:uname -a 给出:

Linux madmax 2.6.18-128.4.1.el5 #1 SMP 8 月 4 日星期二 12:51:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

最佳答案

问题是您构建了新的 GCC错误:在 Linux 上你应该使用

./configure --prefix=/usr

默认安装前缀是/usr/local ,这就是为什么make installgccg++二进制文件进入 /usr/local/bin

现在发生的事情是,您使用新的(符号链接(symbolic link))GCC 4.2.4 进行编译和链接。 ,但在运行时您的程序绑定(bind)到旧的 /usr/lib64/libstdc++.so.6 (版本 6.0.8,而不是必需的 6.0.9)。您可以通过运行 ldd build/ALPHA_SE/m5.opt 来确认这一点:您应该看到它使用 /usr/lib64/libstdc++.so.6 .

您可以进行多种修复。

env LD_LIBRARY_PATH=/usr/local/lib64 ldd build/ALPHA_SE/m5.opt

应该显示该设置 LD_LIBRARY_PATH足以将二进制文件重定向到正确的库,并且

LD_LIBRARY_PATH=/usr/local/lib64 build/ALPHA_SE/m5.opt

应该运行。您可以通过使用 -Wl,-rpath=/usr/local/lib64 重新链接该路径,将其“烘焙”到 m5.opt 二进制文件中。 .

更永久的解决方案是像修复二进制文件一样修复库:

cd /usr/lib64 && mv libstdc++.so.6 libstdc++.so.6_bak &&
ln -s /usr/local/lib64/libstdc++.so.6 .

更好的解决方案是重新配置新的 GCC--prefix=/usr ,然后 make all install .

关于gcc - 未找到 GLIBCXX_3.4.9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1952146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com