我使用 g++ 4.7.2 在相当新的 ubunto 发行版(内核 3.2.0-53-virtual)上编译了应用程序。编译完成后(并在这台机器上工作),我将产品带到旧的 Debian 4 发行版(内核 2.6.34.10)。我目前无法更改分配。我正在尝试运行该应用程序并获得:
Bin/MY_APP: /usr/lib/libstdc++.so.6: version
GLIBCXX_3.4.11' not found (required by Bin/MY_APP) Bin/MY_APP: /usr/lib/libstdc++.so.6: version
GLIBCXX_3.4.15' not found (required by Bin/MY_APP) Bin/MY_APP: /lib/tls/libc.so.6: versionGLIBC_2.15' not found (required by Bin/MY_APP) Bin/MY_APP: /lib/tls/libc.so.6: version
GLIBC_2.11' not found (required by Bin/MY_APP) Bin/MY_APP: /lib/tls/libc.so.6: versionGLIBC_2.4' not found (required by Bin/MY_APP) Bin/MY_APP: /lib/tls/libc.so.6: version
GLIBC_2.12' not found (required by Bin/MY_APP) Bin/MY_APP: /lib/tls/libc.so.6: version `GLIBC_2.7' not found (required by Bin/MY_APP)
我试图解决这个问题,并从我编译应用程序(新 ubunto)libstdc++.so.6 和 libc.so.6 的机器上取下并将它们放在/usr/lib/MY_APP_LIB/上,但是当我运行:
env LD_PRELOAD=/usr/lib/MY_APP_LIB/libstdc++.so.6:/usr/lib/MY_APP_LIB/libc.so.6 /opt/MY_APP/MY_appp
我得到:
Floating point exception
即使我运行 ls 或任何 linux 命令:
env LD_PRELOAD=/usr/lib/MY_APP_LIB/libstdc++.so.6:/usr/lib/MY_APP_LIB/libc.so.6 ls
我得到“浮点异常”
当然,当我尝试将 LD_LIBRARY_PATH 指向/usr/lib/MY_APP_LIB 时,结果也是一样的。
dmesg 显示:
Process 394(MY_APP) has RLIMIT_CORE set to 0 Aborting core Process 422(ls) has RLIMIT_CORE set to 0 Aborting core
我该如何解决这个问题?
最佳答案
这个问题可能是因为你更改了 libc.so.6 库。简单的解决方案,您可以尝试将 LD_PRELOAD 标志设置为其以前的 libc.so.6 路径。例如
export LD_PRELOAD=/lib/libc.so.6:$LD_PRELOAD
ldconfig
关于c++ - 从新的和不同的发行版加载 LD_PRELOAD libstdc++.so.6 和 libc.so.6 时出现浮点异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36468483/