我有一個用特定版本的libc(GLIBC2.4)編譯的linux共享庫(.so),我需要在具有不同libc版本的系統上使用它。我沒有相關庫的資源,因此我無法重新編譯新系統。是否有可能將該庫中的依賴關係更改爲不同的libc?將共享庫重新鏈接到不同版本的libc
回答
如果你需要在一箇舊的glibc系統上的.so,你需要源代碼,並重新編譯/重新鏈接它與舊的glibc。另一種方法是在非默認位置的舊系統上安裝所需的glibc,併爲需要此操作的可執行文件調整LD_LIBRARY_PATH。so
如果有更新的glibc,那麼它通常不會成爲問題,因爲glibc往往是向後兼容的。
你可以做的最好的事情是爲你的系統編譯舊的glibc版本,然後用你的glibc和你的共享庫構建你的應用程序。醜陋雖然...
除非您的程序庫真的使用更改過的接口(不太可能),否則您可以對生成的.so
文件中的版本進行hexedit引用。無論如何,它們都是文字。
非常黑客,問題也是如此。我不知道參考文獻都是文字。 – 2012-01-12 19:06:26
GLIBC _...版本字符串不是全部文本,如果您將它們更改爲二進制文件中的較低版本,該符號仍然不起作用。 – pts 2013-10-12 10:14:12
他們是文字。它們位於'.dynstr'字符串表中,就像要解析符號名稱的字符串一樣。 – 2013-10-12 12:31:33
- 1. 鏈接不同版本的共享庫
- 2. 鏈接到不同版本的SSL共享庫
- 3. 將共享庫鏈接到共享庫
- 4. 不同版本的共享庫
- 5. 將靜態庫鏈接到共享庫?
- 6. 不能boost庫鏈接到共享庫
- 7. 如何將共享庫與其他共享庫鏈接到Linux?
- 8. 鏈接到Linux中的特定共享庫版本
- 9. 我如何鏈接到較舊版本的共享庫
- 10. 鏈接到linux共享庫
- 11. 鏈接到共享庫Linux
- 12. 使用不帶版本的共享庫鏈接
- 13. 將Matlab共享庫鏈接到Qt(Windows)
- 14. cygwin:鏈接器找不到共享庫
- 15. 鏈接共享庫
- 16. 將兩個共享庫鏈接到一些相同的符號
- 17. 如何將可執行文件鏈接到共享庫的通用版本?
- 18. 鏈接一個共享庫靜態到我的共享庫
- 19. 建立共享庫鏈接到其他不標準共享libarary
- 20. 將共享庫與其他共享庫鏈接是否好?
- 21. 如何鏈接特定名稱(版本)的共享庫
- 22. 擁有版本信息的CMAKE鏈接共享庫
- 23. gcc的鏈接共享庫
- 24. 重新鏈接使用隱式鏈接更新共享庫的應用程序?
- 25. 鏈接到Qt中的共享庫
- 26. 將Bash R鏈接到RStudio,版本/封裝庫不同步
- 27. 如何將2個libc版本鏈接到同一個應用程序中?
- 28. 鏈接錯誤 - 不同共享庫中的相同符號
- 29. 數據庫共享/版本
- 30. 與共享庫鏈接
我認爲你需要使它運行在* glibc的*舊版本? – bmargulies 2010-01-15 12:18:21