Linux中的readelf命令

2021-08-18 11:00:59 字數 2181 閱讀 5459

格式

readelf elf-file(s)
功能

用於顯示讀取elf檔案中資訊, 也可以用man命令窺其全貌。它用來顯示乙個或者多個elf格式的目標檔案的資訊,可以通過它的選項來控制顯示哪些資訊。

這裡的elf-file(s)就表示那些被檢查的檔案。可以支援32位,64位的elf格式檔案,也支援包含elf檔案的文件

關於elf檔案

elf檔案型別:

a)可重定位檔案:使用者和其他目標檔案一起建立可執行檔案或者共享目標檔案,例如lib*.a檔案。

b)可執行檔案:用於生成程序映像,載入記憶體執行,例如編譯好的可執行檔案a.out。

c)共享目標檔案:用於和其他共享目標檔案或者可重定位檔案一起生成elf目標檔案或者和執行檔案一起建立程序映像,例如lib*.so檔案。

elf檔案作用:

elf檔案參與程式的連線(建立乙個程式)和程式的執行(執行乙個程式),所以可以從不同的角度來看待elf格式的檔案:

a)如果用於編譯和鏈結(可重定位檔案),則編譯器和鏈結器將把elf檔案看作是節頭表描述的節的集合,程式頭表可選。

b)如果用於載入執行(可執行檔案),則載入器則將把elf檔案看作是程式頭表描述的段的集合,乙個段可能包含多個節,節頭錶可選。

c)如果是共享檔案,則兩者都含有。

elf檔案總體組成:

型別相關就是前面說的那個型別。

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

-a :--all 顯示全部資訊,等價於 -h -l -s -s -r -d -v -a -i

-h :--file-header 顯示elf檔案開始的檔案頭資訊.

-l :--program-headers ;--segments 顯示程式頭(段頭)資訊(如果有的話)。

-s :--section-headers ;--sections 顯示節頭資訊(如果有的話)。

-g :--section-groups 顯示節組資訊(如果有的話)。

-t :--section-details 顯示節的詳細資訊(-s的)。

-s :--syms ;--symbols 顯示符號表段中的項(如果有的話)。

-e :--headers 顯示全部頭資訊,等價於: -h -l -s

-n :--notes 顯示note段(核心注釋)的資訊。

-r :--relocs 顯示可重定位段的資訊。

-u :--unwind 顯示unwind段資訊。當前只支援ia64 elf的unwind段資訊。

-d :--dynamic 顯示動態段的資訊。

-v :--version-info 顯示版本段的資訊。

-a :--arch-specific 顯示cpu構架資訊。

-d :--use-dynamic 使用動態段中的符號表顯示符號,而不是使用符號段。

-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 寬行輸出。

舉例:main.c中的內容如下:

#include void my_print()

int main ()

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

這裡,可見可執行檔案的elf檔案,其型別為exec(可執行檔案),並且由此可見檔案的體系結構為intel 80386。

Linux命令之readelf詳解

date 2017 10 28 23 31 參考 r eadelf命令用來顯示乙個或者多個elf格式的目標檔案的資訊,可以通過它的選項來控制顯示哪些資訊。這裡的elf file s 就表示那些被檢查的檔案。可以支援32位,64位的elf格式檔案,也支援包含elf檔案的文件 這裡一般指的是使用ar命令...

linux中的apachectl是什麼命令

apachectl是apache http伺服器的前端程式。其設計意圖是幫助管理員控制apachehttpd後台守護程序的功能。apachectl指令碼有兩種操作模式。首先,作為簡單的httpd的前端程式,設定所有必要的環境變數,然後啟動httpd,並傳遞所有的命令列引數。其次,作為sysv初始化指...

Linux下shell指令碼中的read命令

read命令作用 從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給shell變數 引數 a 後跟乙個變數,該變數會被認為是個陣列,然後給其賦值,預設是以空格為分割符。d 後面跟乙個標誌符,其實只有其後的第乙個字元有用,作為結束的標誌,會舉例說 明。p 後面跟提示資訊,即在輸入前列印提示資訊。e ...