【发布时间】:2016-06-09 23:05:57
【问题描述】:
我的问题源于一个共享库,我没有重新编译该库的选项。错误声明为undefined reference to memcpy@GLIBC_2.14。
我机器上的 GLIBC 版本是 2.12。我已经看到人们使用该行在网上完成的修复
__asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
我所做的修复是使用十六进制编辑器将 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
到:
0x0060 Name: GLIBC_2.2.5 Flags: none Version 6
......
0x0080 Name: GLIBC_2.2.5 Flags: none Version 4
这修正了我的错误。我想知道的是这会有什么影响。我试图研究 memcpy 与 memmove 以及从 GLIBC_2.14 开始对 memcpy 的更改,但我不太了解发生了什么以及 memcpy 的原始问题是什么。我担心这个“修复”,尽管它允许我的程序运行,以防 memcpy 所做的任何事情都无法正常运行。为什么我在网上看到的所有修复都专门链接到 2.2.5 版本?
如果有人能给我关于这个主题的一些见解或提供一些相关信息的链接,我将不胜感激。
【问题讨论】:
标签: linux gcc linker glibc memcpy