簡體   English   中英

Linux:如何修改ELF二進制文件的動態部分中的共享庫名稱

[英]Linux: How to modify shared library name in Dynamic Section of an ELF binary

我有一個帶soname的共享庫: libfoo.so

如何將我的二進制文件鏈接到libfoo.so,以便我的二進制文件的ELF部分中的共享庫名稱是:libfoo5.so?

我嘗試創建一個符號鏈接:libfoo5.so - > libfoo.so,然后鏈接我的庫:

g++ ... -o mybinary *.o -Lpath -lfoo5

但是,當我打印出ELF二進制文件中的動態部分時,它會顯示:

readelf -d mybinary

我還是得到:

Shared library: [libfoo.so]

文件libfoo5.so可能是實際的libfoo.so符號鏈接或類似的東西。 ldd對你的二進制文件怎么說?

您通常在構建共享庫時執行此操作。 有一個名為“soname”的鏈接器選項可以設置它。

如果你可以在構建之后編輯它,我不知道副作用,但如果它可能它可能包含在名為“elfutils”的包中。 該軟件包包含幾個旨在操作ELF目標文件的程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM