c++ - 尝试在旧机器上使用新的 libstdc++ 会导致错误

标签 c++ version libstdc++

我有一个在机器 A 上使用 CMake 编译的程序,但我想在旧机器 B 上运行它。当我这样做时,我得到以下信息:

/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./program)
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14' not found (required by ./program)
/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by ./program)

我看过this question我认为解决我的问题的最好方法是将较新版本复制到机器 B。所以我复制了 /usr/lib/libstdc++.so.6(和 libstdc++.so。 6.0.14) 从 A 到 B 上的 ~/lib 并做了

export LD_LIBRARY_PATH=~/lib:$LD_LIBRARY_PATH

之后。当开始我的程序时,我现在得到

Floating point exception

我该怎么做才能让它发挥作用?

最佳答案

如您所见,您需要在旧系统上安装较新的 libstdc++.so.6,并告诉动态链接器如何找到它。

参见 How do I insure that the dynamically linked library will be found?在 libstdc++ 常见问题解答和 Finding Dynamic or Shared Libraries 中在手册中了解如何确保找到它的详细信息,有几个选项。 LD_LIBRARY_PATH 只是选项之一。

浮点异常不应该与 libstdc++ 相关,您需要使用调试器来查找它的来源并获取更多详细信息。

关于c++ - 尝试在旧机器上使用新的 libstdc++ 会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12936611/

相关文章:

c++ - 再次包含库和 Error LNK2001 : unresolved external symbol

c++ - AdjustWindowRectExForDpi 似乎没有调整客户区域大小

java - 更新到最新版本后缺少 Artifact

c++ - 为什么 std::derived_from 概念是通过添加 cv 限定符的附加可转换性测试来实现的?

c++ - 如何在 Centos 7 上安装更新版本的 libstdc++

c++ - 为 i686-elf 交叉编译和链接 libstdc++(在 Ubuntu 16.04 上使用 g++)

c++ - 在 MPI 中使用 char[] 发送结构

c++ - 麻烦用 true 初始化 boolean 数组

SVN - 将多个项目收集到一个基线版本中

ruby-on-rails - 如何从 github 中删除目录?