在服务器上编译的a.exe文件放到本机运行出现version `GLIBC_2.14' not found
排查:
objdump -p a.exe | grep GLIBC_
可以看到是GLIBC_2.14
objdump -T a.exe | grep GLIBC_2.14
nm a.exe | grep GLIBC_2.14
可以看到是memcpy用到了GLIBC_2.14
gcc --print-file-name=libc.so
strings /lib64/libc.so.6 | grep memcpy
可以看到memcpy最低版本是GLIBC_2.2.5
解决方法:
方法1. 本机升级安装libc2.14
方法 2: C代码中加入__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
本文介绍了解决因GLIBC版本不一致导致的应用程序运行错误的方法。通过分析a.exe依赖的GLIBC版本,确定了memcpy函数使用的是GLIBC_2.14版本。提供了两种解决方案:一是升级本地系统的GLIBC版本到2.14;二是通过C代码中的__asm__指令重新指定memcpy的符号版本。

2858

被折叠的 条评论
为什么被折叠?



