我的问题源于我给出的共享库,没有重新编译库的选项.错误说明undefined reference to memcpy@GLIBC_2.14
.
我机器上的GLIBC版本是2.12.我见过人们使用该线路在线完成的修复工作
__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
Run Code Online (Sandbox Code Playgroud)
我做的修复是使用十六进制编辑器将2.14的引用更改为GLIBC_2.2.5.执行命令时readelf -V lib_name.so
,输出更改为:
0x0060 Name: GLIBC_2.14 Flags: none Version 6
......
0x0080 Name: GLIBC_2.2.5 Flags: none Version 4
Run Code Online (Sandbox Code Playgroud)
至:
0x0060 Name: GLIBC_2.2.5 Flags: none Version 6
......
0x0080 Name: GLIBC_2.2.5 Flags: none Version 4
Run Code Online (Sandbox Code Playgroud)
这解决了我的错误.我想知道的是它会产生什么样的影响.我曾尝试研究的memcpy对比的memmove与memcpy的在GLIBC_2.14开始的变更,但我不太明白是怎么回事,什么原问题的memcpy了.我担心这个"修复",虽然它允许我的程序运行,以防memcpy正在做的事情表现不正常.为什么我在网上看到的所有修复程序都专门链接到2.2.5版本?
如果有人能给我一些关于这个主题的见解或提供一些相关信息的链接,我将不胜感激.