尝试在旧计算机上使用新的LibstDC 会导致错误

Trying to use a new libstdc++ on an old machine causes error

本文关键字:LibstDC 错误 计算机      更新时间:2023-10-16

我有一个我在机器A上使用cmake编译的程序,但我想在较旧的机器上运行它。当我这样做时,我会得到以下内容:

/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)

我已经看到了这个问题,我认为解决问题的最佳方法是将较新版本复制到MachineB。因此,我将/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,并告诉动态链接器如何找到它。

查看如何确保将找到动态链接的库?在LIBSTDC 常见问题中,并在手册中查找动态或共享库,以获取如何确保找到它的详细信息,并提供多个选项。LD_LIBRARY_PATH只是其中之一。

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