Linux終端命令-程序文件相關命令(1)

一 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。
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裏面。

ls ls [選項] [目錄] ls -l /lib/libc*

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

-l 以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名、文件類型、權限模式、硬連接數、所有者、組、文件大小和最後修改時間等。

總結:主要用於顯示目錄內容(文件屬性和權限)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章