一 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變數的值,但需注意...