在一些开发场景中,要求在高版本机器上编译二进制文件,在低版本的机器中执行,此时可能会出现一些运行上的问题。
通常二进制文件执行时需要链接一些基础.so库
通过ldd命令可以查看
ldd wanggang
该命令可以看到其链接了libgcc,libstdc++,libc等库。
通常版本不同导致的运行问题就是这几个库的版本不一样导致的。
例如通过下面命令查看libc库支持的版本
strings “/lib/x86_64-linux-gnu/libc.so.6” | grep LIBC
此时可以对比二进制文件中所需要的版本
objdump -x wanggang | grep GLIBC
如果其有不支持的版本,解决方法可以降低gcc的版本以适应低版本。对于gcc和libstdc++库可以通过静态链接的方式不依赖外在的库