㈠ linux下如何查看一個二進制文件是使用-O0優化還是-O2優化
gcc默認提供了5級優化選項:
-O/-O0:無優化(默認)
-O1:使用能減少目標文件大小以及執行時間並且不會使編譯時間明顯增加的優化。該模式在編譯大型程序的時候會花費更多的時間和內存。在-O1下:編譯會嘗試減少代碼體積和代碼運行時間,但是並不執行會花費大量時間的優化操作。
-O2: 包含-O1的優化並增加了不需要在目標文件大小和執行速度上進行折衷的優化。GCC執行幾乎所有支持的操作但不包括空間和速度之間權衡的優化,編譯器不執行循環展開以及函數內聯。這是推薦的優化等級,除非你有特殊的需求。-O2會比-O1啟用多一些標記。與-O1比較該優化-O2將會花費更多的編譯時間當然也會生成性能更好的代碼。
-Os:專門優化目標文件大小,執行所有的不增加目標文件大小的-O2優化選項。同時-Os還會執行更加優化程序空間的選項。這對於磁碟空間極其緊張或者CPU緩存較小的機器非常有用。但也可能產生些許問題,因此軟體樹中的大部分ebuild都過濾掉這個等級的優化。使用-Os是不推薦的。
-O3: 打開所有-O2的優化選項並且增加 -finline-functions, -funswitch-loops,-fpredictive-commoning, -fgcse-after-reload and -ftree-vectorize優化選項。這是最高最危險的優化等級。用這個選項會延長編譯代碼的時間,並且在使用gcc4.x的系統里不應全局啟用。自從3.x版本以來gcc的行為已經有了極大地改變。在3.x,-O3生成的代碼也只是比-O2快一點點而已,而gcc4.x中還未必更快。用-O3來編譯所有的軟體包將產生更大體積更耗內存的二進制文件,大大增加編譯失敗的機會或不可預知的程序行為(包括錯誤)。這樣做將得不償失,記住過猶不及。在gcc 4.x.中使用-O3是不推薦的。
————————————————
版權聲明:本文為CSDN博主「rongming_lu」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/LU_ZHAO/java/article/details/104516291
㈡ linux 怎麼看完二進制文件
查看二進制文件,用od或hexmp命令。
$od-tx1-tc-AxbinFile
abcde12345abcde1
2345abcde12345ab
00002063646531323334350a
cde12345
000029
-tx1選項表示將文件中的位元組以十六進制的形式列出來,每組一個位元組(類似hexmp的-c選項)
-tc選項表示將文件中的ASCII碼以字元形式列出來(和hexmp類似,輸出結果最左邊的一列是文件中的地址,默認以八進制顯示)
-Ax選項要求以十六進制顯示文件中的地址
㈢ linux 如何知道一個文件是二進制文件
使用vi編輯器查看,如果是文字 就是字元文件,否則就是二進制文件。
㈣ Linux系統中hexmp的命令
查看一些二進制文件的內容,比如二進制文件中包含的.某些字元串。可以將二進制文件轉換為ASCII、10進制、16進制或8進制進行查看。
-b 每一位元組以八進制顯示,一行共16個位元組,一行開始以十六進制顯示偏移值;
0000000 177 105 114 106 002 001 001 000 000 000 000 000 000 000 000 000
-c 每一位元組以ASCII字元顯示,其餘同上;
0000000 177 E L F 002 001 001
-C 每一位元組以16進制顯示,一行共16個位元組,尾部附加16個相應的ASCII字元;
00000000 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 |.ELF.。。。。。|
-n 只解釋指定長度位元組
單位:默認十進制,0x或0X開頭則為16進制,0開頭則為8進制。默認為位元組,b則為512位元組,k則為1024位元組,m則為1048576位元組
-d 雙位元組十進制顯示
-o 雙位元組八進制顯示
-v 去除中間顯示的「*」字元
-x 雙位元組十六進制顯示
-e 格式化參數
上面就是Linux中hexmp命令的用法介紹了,從文中我們可以了解到,hexmp命令並不是只能查看十六進制的,還能進行十進制、八進制等的顯示。
㈤ linux系統中怎麼看一個二進制的可執行文件的源代碼,
您好:
您可以通過which命令查找二進制的絕對位置,例如:
[root@master tmp]# which ls
alias ls='ls --color=auto'
/bin/ls
[root@master tmp]# rpm -qf /bin/ls
coreutils-8.4-31.el6.x86_64
這時候就可以查找到二進制是由哪個軟體安裝生成,希望能幫到您。
㈥ Linux可執二進制行文件和庫依賴查看方法
1、查看依賴庫
1.1、查看可執行文件依賴的庫有哪些
舉例,查看常用的ls工具,依賴哪些庫:
1.2、查看動態庫,依賴的庫有哪些
舉例,查看libcap依賴的庫有哪些:
㈦ linux中od顯示二進制文件問題
hexmp工具也可以查看,不過與od一樣,都是將二進制文件轉化為十六進制數據輸出。
試試將文件傳到Windows側用UltraEditor等工具查看吧。
㈧ linux 命令行下如何查看文件內容
linux 命令行中cat命令可以直接打開我們想要查看的文件內容。比如part1.txt文件是一首詩詞,可以用此命令:[lichao@localhost test]$ cat part1.txt
(8)linux2進制查看文件擴展閱讀:
linux 命令行中查看文件類型:
file是一個非常便捷的命令,用它可以探測文件的字元編碼。如下我們創建了兩個文件
[lichao@localhost test]$ ls -l
total 288
-rw-rw-r--. 1 lichao lichao 4 Aug 24 15:31 abc.txt
-rw-rw-r--. 1 lichao lichao 285310 Aug 24 15:26 all.txt
通過file命令來查看下文件的字元集編碼:
[lichao@localhost test]$ file abc.txt
abc.txt: ASCII text
[lichao@localhost test]$ file all.txt
all.txt: UTF-8 Unicode text, with CRLF, CR, LF line terminators
[lichao@localhost test]$
其中abc.txt是ASCII編碼,而 all.txt 是UTF-8編碼,這有助於我們在打開含有中文的文件時,定位出現亂碼的原因。
㈨ 使用hexmp 查看二進制文件
byte 1個位元組
short 2個位元組
char 2個位元組
int 4個位元組
long 8個位元組
float 4個位元組
double 8個位元組
有時候需要查看一些二進制文件的內容,比如二進制文件中包含的某些字元串。這個時候可以用hexmp工具看查看。
如果是尋找文本內容,則經常在後面用管道跟上grep命令:hexmp -C file_name |grep hellokitty
hexmp命令一般用來查看」二進制「文件的十六進制編碼,但實際上它的用途不止如此,手冊頁上的說法是「ascii, decimal, hexadecimal, octal mp「,這也就是本文標題為什麼要將」十六「給引起來的原因,而且它能查看任何文件,而不只限於二進制文件了。另外還有xxd和od也可以做類似的事情,但是我從未用過。在程序輸出二進制格式的文件時,常用hexmp來檢查輸出是否正確。當然也可以使用Windows上的UltraEdit32之類的工具查看文件的十六進制編碼,但Linux上有現成的工具,何不拿來用呢。
常用參數
如果要看到較理想的結果,使用-C參數,顯示結果分為三列(文件偏移量、位元組的十六進制、ASCII字元)。
格式:hexmp -C binfile
-C 輸出規范的十六進制和ASCII碼。來自: [ http://man.linuxde.net/hexmp]
一般文件都不是太小,最好用less來配合一下。
格式:hexmp -C binfile | less
㈩ linux 怎麼看 文件二進制
一、在Linux下查看二進制文件的軟體:
xxd (2進制)
hexmp (16進制)
二、編輯:
1、biew
2、hexedit
3、vim
Vim 來編輯二進制文件。Vim 本非為此而設計的,因而有若干局限。但你能讀
取一個文件,改動一個字元,然後把它存檔。結果是你的文件就只有那一個字元給改了,
其它的就跟原來那個一模一樣。
要保證 Vim 別把它那些聰明的竅門用錯地方,啟動 Vim 時加上 "-b" 參數:
vim -b datafile
這個參數設定了 'binary' 選項。其作用是排除所有的意外副作用。例如,'textwidth'
設為零,免得文本行給擅自排版了。並且,文件一律以 Unix 文件格式讀取。
二進制模式可以用來修改某程序的消息報文。小心別插入或刪除任何字元,那會讓程序運
行出問題。用 "R" 命令進入替換模式。
文件里的很多字元都是不可顯示的。用 Hex 格式來顯示它們的值:
:set display=uhex
另外,也可以用命令 "ga" 來顯示游標下的字元值。當游標位於一個 字元上時,
該命令的輸出看起來就像這樣:
27, Hex 1b, Octal 033
文件中也許沒那麼多換行符。你可以關閉 'wrap' 選項來獲得總覽的效果:
:set nowrap
字 節 位 置
要發現你在文件中的當前位元組位置,請用這個命令:
g CTRL-G
其輸出十分冗長:
Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206
最後兩個數字就是文件中的當前位元組位置和文件位元組總數。這已經考慮了 'fileformat'
選項導致換行符位元組不同的影響。
要移到文件中某個指定的位元組,請用 "Go" 命令。例如,要移到位元組 2345:
2345go
使 用 XXD
一個真正的二進制編輯器用兩種方式來顯示文本: 二進制和十六進制格式。你可以在 Vim
里通過轉換程序 "xxd" 來達到這效果。該程序是隨 Vim 一起發布的。
首先以二進制方式編輯這個文件:
vim -b datafile
現在用 xxd 把這個文件轉換成十六進制:
:%!xxd
文本看起來像這樣:
0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI
0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0
0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59.
現在你可以隨心所欲地閱讀和編輯這些文本了。 Vim 把這些信息當作普通文本來對待。
修改了十六進制部分並不導致可顯示字元部分的改變,反之亦然。
最後,用下面的命令把它轉換回來:
:%!xxd -r
只有十六進制部分的修改才會被採用。右邊可顯示文本部分的修改忽略不計。