一 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 <option(s)> 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庫 |
nm |
nm[-A][-C]...File... |
nm obj.o |
顯示對象文件、可執行文件以及對象文件庫裏的符號信息。 |
strip | strip [-V][-r]...Flie... | strip obj | 通過除去綁定程序和符號調試程序使用的信息,減少擴展公共對象文件格式(XCOFF)的對象文件的大小 |
ar |
ar [-dmpqrtx] [cfosSuvV] [a<成員文件>] [b<成員文件>][i<成員文件>][備存文件] [成員文件] |
ar -t libc.a ar -x libc.a |
-t 顯示備存文件中所包含的文件 -a 刪除備存文件中的成員文件 -p顯示備存文件中的成員文件內容 -q將文件附加在備存文件的末端 -r將文件插入備存文件中 -x從備存文件中取出成員文件 |
cat | cat [選項] [文件]... | 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)匹配的行,並將搜索結果打印出來,不會修改原文件內容。 | |
ldd | ldd [option(s)] [file] | ldd obj | 查看一個程序主模塊或一個共享庫依賴於哪些共享庫 |
ld | ld [參數選項] |
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指定程序入口符號 [目標文件]指定要鏈接的目標文件名 總結:GNU的鏈接器,將目標文件鏈接進可執行程序 |
ldconfig | ldconfig [必要參數][選擇參數] | ldconfig -n shared_library_directory |
-n只處理在命令行中指定的文件 總結:ldconfig是一個動態鏈接庫管理命令,爲了讓動態鏈接庫爲系統所共享,還需運行動態鏈接庫的管理命令--ldconfig。 linux下的共享庫機制採用了類似於高速緩存的機制,將庫信息保存在/etc/ld.so.cache裏邊。 |
ls | ls [選項] [目錄] | ls -l /lib/libc* |
-a 顯示目標目錄中包含隱藏文件在內的所有文件及子目錄 -l 以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名、文件類型、權限模式、硬連接數、所有者、組、文件大小和最後修改時間等。 總結:主要用於顯示目錄內容(文件屬性和權限) |