Linux終端命令 程式檔案相關命令(1)

2021-06-22 02:15:45 字數 3106 閱讀 8623

一 linux下相關的命令 命令

語法命令示例

說明file

file [-belvz][-f 《名稱檔案》]

[-m 《魔法數字檔案》...][檔案或目錄...]

file foobar.o

file /bin/bash

檢視檔案資訊,辨識檔案型別

objdump

objdump [選項] objfile

objdump -x obj

objdump -t obj

objdump -h obj

objdump -s -d obj

objdump -x -s -d obj

objdump -d obj

objdump -r obj.o

-x顯示所有可用的頭資訊,包括符號表、重定位入口,等價於

-a -f -h -r -t

-t顯示檔案的符號表入口

-h顯示目標檔案各個section的頭部摘要資訊

-s可以將所有段的內容以十六進製制的方式列印出來;

-d可以將所有包含指令的段反彙編

-r檢視目標檔案的重定位表

總結:檢視目標檔案(二進位制檔案)的資訊

size

size obj.o

檢視elf檔案的**段、資料段和bss段的長度

objcopy

將乙個二進位制檔案作為目標檔案的乙個段

readelf

readelf elf-file(s)

readelf -h obj.o

readelf -s obj.o

readelf -l obj.elf

readelf -d foo.so | grep textrel

readelf -r lib.so

-h檢視elf檔案的檔案頭資訊

-s顯示elf檔案的段資訊

-l顯示程式頭資訊,描述elf檔案該如何被作業系統對映到程序的虛擬空間

-d顯示dynamic section資訊

-r檢視動態鏈結檔案的重定位表

總結:顯示elf檔案的資訊,與objdmp功能類似,但是其顯示的資訊更為具體,並且其不依賴bfd庫

nmnm[-a][-c]...file...

nm obj.o

顯示物件檔案、可執行檔案以及物件檔案庫里的符號資訊。

strip

strip [-v][-r]...flie...

strip obj

通過除去繫結程式和符號除錯程式使用的資訊,減少擴充套件公共物件檔案格式(xcoff)的物件檔案的大小

arar [-dmpqrtx] [cfossuvv] [a《成員檔案》]

[b《成員檔案》][i《成員檔案》][備存檔案]

[成員檔案]

ar -t libc.a

ar -x libc.a

-t 顯示備存檔案中所包含的檔案

-a 刪除備存檔案中的成員檔案

-p顯示備存檔案中的成員檔案內容

-q將檔案附加在備存檔案的末端

-r將檔案插入備存檔案中

-x從備存檔案中取出成員檔案

catcat [選項] [檔案]...

cat /proc/21963/maps

cat主要的三大功能:

1.顯示檔案:cat file

2.從鍵盤建立乙個檔案:cat > filename

3.將幾個檔案合為乙個檔案: cat file1 file2 > file

cat命令的用途是連線檔案或標準輸入並列印。這個命令常用來顯示檔案內容,或者將幾個檔案連線起來顯示,或者從標準輸入讀取內容並顯示,它常與重定向符號配合使用。

grep

grep [option(s)] pattern [file(s)]

grep 在乙個或多個檔案裡面查詢與模式字串(pattern)匹配的行,並將搜尋結果列印出來,不會修改原檔案內容。

lddldd [option(s)]  [file]

ldd obj

檢視乙個程式主模組或乙個共享庫依賴於哪些共享庫

ldld [引數選項]

ld -rpath /home/mylib -o program.out program.o -lsomelib

ld -static -e nomain -o hello hello.o

ld -verbose

ld -t link.script

使用鏈結器的"-rpath"選項,可以指定鏈結產生的目標程式的共享庫查詢路徑

將hello.o鏈結成可執行檔案hello

檢視ld的預設鏈結指令碼

指定指令碼為鏈結控制指令碼

-o指定輸出檔名

-e指定程式入口符號

[目標檔案]指定要鏈結的目標檔名

ldconfig

ldconfig [必要引數][選擇引數]

ldconfig -n shared_library_directory

-n只處理在命令列中指定的檔案

總結:ldconfig是乙個動態鏈結庫管理命令,為了讓動態鏈結庫為系統所共享,還需執行動態鏈結庫的管理命令--ldconfig。

ldconfig 命令的用途,主要是在預設搜尋目錄(/lib和/usr/lib)以及動態庫配置檔案/etc/ld.so.conf內所列的目錄下,搜尋出可共享的動態鏈結庫(格式如前介紹,lib*.so*),進而建立出動態裝入程式(ld.so)所需的連線和快取檔案.

快取檔案預設為 /etc/ld.so.cache,此檔案儲存已排好序的動態鏈結庫名字列表.

linux下的共享庫機制採用了類似於快取記憶體的機制,將庫資訊儲存在/etc/ld.so.cache裡邊。

程式連線的時候首先從這個檔案裡邊查詢,然後再到ld.so.conf的路徑裡邊去詳細找.這就是為什麼修改了ld.so.conf要重新執行一下ldconfig的原因

補充一點,ldconfig在/sbin裡面。

lsls [選項] [目錄]

ls -l /lib/libc*

-a 顯示目標目錄中包含隱藏檔案在內的所有檔案及子目錄

-l 以長格式顯示目錄下的內容列表。輸出的資訊從左到右依次包括檔名、檔案型別、許可權模式、硬連線數、所有者、組、檔案大小和最後修改時間等。

總結:主要用於顯示目錄內容(檔案屬性和許可權)



C 程式檔案

elf 格式檔案是一種為 linux 系統所採用的通用檔案格式,支援動態鏈結和重定位,有很大的檔案頭 flat 格式檔案是扁平格式的檔案,對檔案頭和一些段資訊做了簡化,可執行程式小,適於嵌入式系統 elf2flt 就是將 elf 格式轉換為 flt 格式,在編譯器鏈結的時候可使用 elf2flt 選...

C 程式檔案

bin 目錄用來存放編譯的結果,bin是二進位制binrary的英文縮寫,因為最初c編譯的程式檔案都是二進位制檔案,它有debug和release兩個版本,分別對應的資料夾為bin debug和bin release,這個資料夾是預設的輸出路徑,我們可以通過 專案屬性 配置屬性 輸出路徑來修改。ob...

查詢程式檔案

查詢程式檔案 問題 檢查命令mkdir的程式檔案在 檢查命令ls的程式檔案在 檢查命令ifconfig的程式檔案在 檢查命令hostname的程式檔案在 嘗試查詢cd的程式檔案在 方案 利用which命令可以查詢命令的程式檔案在 一般適用於外部命令。利用echo命令可以輸出path變數的值,但需注意...