我有一个在机器 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/