溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux常用命令readelf怎么用

發(fā)布時間:2022-02-17 11:07:56 來源:億速云 閱讀:201 作者:小新 欄目:開發(fā)技術

這篇文章主要介紹了Linux常用命令readelf怎么用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

Linux常用命令readelf命令用于顯示讀取ELF文件中信息, 也可以用man命令窺其全貌。它用來顯示一個或者多個elf格式的目標文件的信息,可以通過它的選項來控制顯示哪些信息。

Linux常用命令readelf怎么用

格式

 readelf  elf-file(s)

關于ELF文件:

ELF文件類型:

a)可重定位文件:用戶和其他目標文件一起創(chuàng)建可執(zhí)行文件或者共享目標文件,例如lib*.a文件。

b)可執(zhí)行文件:用于生成進程映像,載入內存執(zhí)行,例如編譯好的可執(zhí)行文件a.out。

c)共享目標文件:用于和其他共享目標文件或者可重定位文件一起生成elf目標文件或者和執(zhí)行文件一起創(chuàng)建進程映像,例如lib*.so文件。

ELF文件作用:

ELF文件參與程序的連接(建立一個程序)和程序的執(zhí)行(運行一個程序),所以可以從不同的角度來看待elf格式的文件:

a)如果用于編譯和鏈接(可重定位文件),則編譯器和鏈接器將把elf文件看作是節(jié)頭表描述的節(jié)的集合,程序頭表可選。

b)如果用于加載執(zhí)行(可執(zhí)行文件),則加載器則將把elf文件看作是程序頭表描述的段的集合,一個段可能包含多個節(jié),節(jié)頭表可選。

c)如果是共享文件,則兩者都含有。

ELF文件總體組成:

elf文件頭描述elf文件的總體信息。包括: 系統(tǒng)相關,類型相關,加載相關,鏈接相關。

 系統(tǒng)相關表示:elf文件標識的魔術數(shù),以及硬件和平臺等相關信息,增加了elf文件的移植性,使交叉編譯成為可能。
 
 類型相關就是前面說的那個類型。
 
 加載相關:包括程序頭表相關信息。
 
 鏈接相關:節(jié)頭表相關信息。
 1234567

選項(以短、長形式給出):

 -a :--all 顯示全部信息,等價于 -h -l -S -s -r -d -V -A -I
 
 -h :--file-header 顯示elf文件開始的文件頭信息.
 
 -l :--program-headers  ;--segments 顯示程序頭(段頭)信息(如果有的話)。
 
 -S :--section-headers  ;--sections 顯示節(jié)頭信息(如果有的話)。
 
 -g :--section-groups 顯示節(jié)組信息(如果有的話)。
 
 -t :--section-details 顯示節(jié)的詳細信息(-S的)。
 
 -s :--syms  ;--symbols 顯示符號表段中的項(如果有的話)。
 
 -e :--headers 顯示全部頭信息,等價于: -h -l -S
 
 -n :--notes 顯示note段(內核注釋)的信息。
 
 -r :--relocs 顯示可重定位段的信息。
 
 -u :--unwind 顯示unwind段信息。當前只支持IA64 ELF的unwind段信息。
 
 -d :--dynamic 顯示動態(tài)段的信息。
 
 -V :--version-info 顯示版本段的信息。
 
 -A :--arch-specific 顯示CPU構架信息。
 
 -D :--use-dynamic 使用動態(tài)段中的符號表顯示符號,而不是使用符號段。
 
 -x:--hex-dump=以16進制方式顯示指定段內內容。number指定段表中段的索引,或字符串指定文件中的段名。
 
 -w[liaprmfFsoR]或者
 
 -debugdump[=line,=info,=abbrev,=pubnames,=aranges,
 =macro,=frames,=frames-interp,=str,=loc,=Ranges] 顯示調試段中指定的內容。
 
 -I :--histogram 顯示符號的時候,顯示bucket list長度的柱狀圖。
 
 -v :--version 顯示readelf的版本信息。
 
 -H :--help 顯示readelf所支持的命令行選項。
 
 -W :--wide 寬行輸出。
 1234567891011121314151617181920212223242526272829303132333435363738394041424344

舉例:

main.c中的內容如下:

 #include 
  void my_print()
 {
     printf(“hello word”);
 }
 
 int main ()
 {
     my_print();
     return 0;
 }
 123456789101112

生成a.out文件,用readelf命令讀取一下,得到:

Linux常用命令readelf怎么用

這里,可見可執(zhí)行文件的elf文件,其類型為EXEC(可執(zhí)行文件),并且由此可見文件的體系結構為Intel 80386。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Linux常用命令readelf怎么用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI