我的问题源于共享库我没有选择重新编译库。错误规定为undefined reference to [email protected]_2.14
。memcpy memmove的解释GLIBC_2.14/2.2.5
我机器上的GLIBC版本是2.12。我见过修复人们使用线路
__asm__(".symver memcpy,[email protected]_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版本?
如果有人能给我一些关于这个主题的见解或提供一些有关信息的链接,我将不胜感激。
_TO得到与执行相兼容的库的版本environment_ 有什么办法交叉编译库或可执行文件,因此它需要比GCC工具链使用的一个较老版本的glibc? – scrutari
@starfury是的,有,但它不是微不足道的:http://stackoverflow.com/a/8658468/50617 –