gpt4 book ai didi

c++ - 如何使用 GCC 4.8 配置 libstdc++?

转载 作者:可可西里 更新时间:2023-11-01 16:34:35 26 4
gpt4 key购买 nike

不久前,我决定升级到 GCC 4.8,以便早日开始使用某些 c++11 功能。不过,我有点走神了,直到几天前的一个项目才真正使用任何新功能(新编译器似乎工作正常,但这可能只是因为我没有使用任何新功能。)

在这个新项目中,当我使用 =std=c++11 标志进行编译时,我没有遇到任何问题。但是,在运行时,我收到错误:

./main: /usr/lib/i386-linux-gnu/libstdc++.so.6: versionGLIBCXX_3.4.18' not found (required by ./main)`

我假设链接到与 GCC 4.8 相关的更现代的 libstdc++ 库时出现问题,但我终究无法弄清楚如何解决这个问题或适当的库应该在哪里。我记得将 g++ 和 gcc 二进制文件象征性地链接到 gcc-4.8,这似乎是有效的,因为 g++ -v 返回:

Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/app/gcc/4.8.0/libexec/gcc/i686-pc-linux-gnu/4.8.0/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ./gcc-4.8.0/configure --prefix=/app/gcc/4.8.0
Thread model: posix
gcc version 4.8.0 (GCC)

另一个在线线程让我查看程序的 ldd 输出,它确实告诉我链接到的 libstdc++ 库的目录结构不同于二进制文件的目录结构。但是,我无法在后者中找到合适的 libstdc++ 库,所以我不确定该去哪里找。 ldd main 的输出是:

./main: /usr/lib/i386-linux-gnu/libstdc++.so.6: versionGLIBCXX_3.4.18' not found (required by ./main) linux-gate.so.1 => (0xb7791000) libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb768e000) libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb7662000) libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb7644000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb749b000) /lib/ld-linux.so.2 (0xb7792000)`

我不确定到底哪里出了问题,我将继续使用谷歌搜索并四处寻找答案,但非常感谢你们提供的任何帮助。如果对这个问题有任何不清楚的地方或者我忘记了一些信息,请告诉我,我会尝试添加。非常感谢!

最佳答案

您需要告诉您的动态链接器(它在您运行程序时执行)在哪里可以找到库。将 LD_LIBRARY_PATH 设置为库的路径(可能在 /app/gcc/4.8.0/lib 或其他地方)。

使用 find/app/gcc/4.8.0 -name "libstdc++.so.6"。将该目录添加到您的 LD_LIBRARY_PATH。例如我提到的路径:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/app/gcc/4.8.0/lib(如果您使用的是 Linux 默认的类似 bourne 的 shell)。

然后尝试运行你的程序。

如果可行,您可能希望将动态链接器配置为在不使用 LD_LIBRARY_PATH 的情况下查找目录。有关如何配置路径的详细信息,请参见 man ld.so

关于c++ - 如何使用 GCC 4.8 配置 libstdc++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16826585/

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