使用另一個版本的glibc


glibc是Linux系統的核心庫,稍有不慎就會導致系統崩潰。如果在程序中必須使用另一版本的glibc,則需要小心從事。具體來言,是在編譯時指定--rpath--dynamic-linker,而在運行時指定LIB_LIBRARY_PATH。

gcc main.c -o main -Wl,--rpath=/path/to/new/glibc/lib \ -Wl,--dynamic-linker=/path/to/new/glibc/ld-linux.so.2

其中ld-linux.so.2在64位系統下可能為ld-linux-x86-64.so.2,它的路徑會硬編碼到程序中(因此顯式指定時換成別的名字也沒什么問題)。正是這個原因,導致很多已有程序不能使用新glibc的庫。

另外,查看鏈接問題的兩個常用工具是:

  • ldd: 查看可執行文件或動態庫依賴的其它的庫
  • strings: 查看庫中的字符串,比如strings /lib64/libc.so.2 | grep GLIBC可以查看GLIBC支持的版本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM