我的問題源於共享庫我沒有選擇重新編譯庫。錯誤規定爲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 –