編譯軟件的一些參數(不定時更新)(多用於linux下)

gcc:(編譯器)

-v 顯示gcc版本。

--h 顯示幫助。

-o 重命名文件。例:gcc test.c -o main.out

-E 將源文件預處理但不編譯。例:gcc test.c -E -o test.i

-c 將源文件編譯爲工程文件。例:gcc test.c -c -o test.o

-S 將源文件翻譯爲彙編。例:gcc test.c -S -o test.s

-O 優化等級,用來對源文件優化,最高爲-O3。例:gcc test.c -S -O2 test.s  #這裏設定優化等級爲O2,值得注意的是,如果源文件使用了某個頭文件中的內聯函數,當沒有-O參數,內聯函數將不會在程序中展開。優化等級越高,程序編譯越慢。

-m32 告訴編譯器編譯爲32位程序。例:gcc test.c -m32 -o test.out

-x 指定語言(c/c++),建議將命令參數放在源文件名之前。例:gcc -x c test.c #或 gcc -x c++ test.c

-shared 動態庫編譯,鏈接動態庫

-fPIC(或-fpic) 生成使用相對地址無關的目標代碼。例: gcc -shared -fPIC -o libtest.so test.c //動態庫後綴名爲so

-g 調試選項,使用該參數,會生成含有調試信息的應用程序,如果想要使用gdb來調試程序,那麼必須加上此項。例:gcc -g -o test.out text.c

 

ld:(鏈接器)

-o 重命名文件。例:ld -o main.o test.c

-Ttext 指定程序的入口地址。例:ld -Ttext 0x7c00 test.c

-N 不對齊數據。

-m 指定仿真模型(即運行的平臺),輸入ld --help查看。例:ld -m elf32-i386 tets.c #注意,如果是在windows下的ld(MingW),與linux是不同的。常用的是-m i386pe。

-e 指定入口標號,比如主函數(一般是main())爲sys(),則要使用-e _sys。例:gcc -e _sys test.c #gcc中在函數名前加一個下劃線表示這是一個函數,用來區分函數體。可以使用gcc的-S參數來將源文件翻譯爲彙編文件。

 

make:

-B 無條件make所有目標

-C make時先進入制定的目錄,例:make -C test  #先進入test目錄再make

-f 指定makefile文件,例:make -f test/makefile  #使用test目錄下的makefile文件

 

objcopy:

-S 刪除所有符號和重定位。

-O 轉換輸出文件的類型。例:objcopy -O binary test.out test.bin

-j 指定要截取的段。例:objcopy -j .text -j data test.out test.bin #具體段參見AT&T彙編

 

objdump:

-b 說明要處理的文件類型。

-d 將代碼段反彙編。

-D 反彙編所有段。

-m 指定指令集,使用objdump --help可以在最後找到支持的指令集。

> 設定輸出文件。例:objdump -b binary -D -m i386 main.bin > main.txt #這裏將一個二進制文件main.bin 進行反彙編,結果輸出到main.txt

-j 指定要反彙編的段。例:objdump -d test.out -j .text -j .data

-S 反彙編時,將源代碼和反彙編代碼交替顯示,編譯時需要加入-g選項。例:objdump -S -d test.out

-l 反彙編時插入源代碼的行號和文件名

 

dd:

if 指定輸入文件。

of 指定輸出文件。

bs 指定最小塊的大小。

count 指定塊數。

例:dd if=/dev/zero of=test.bin bs=512 count=2 #這裏生成一個名爲test.bin,大小爲512*2字節,全部都是0的文件。/dev/zero可以當作一個全部都是0的文件。

skip 指定輸入文件的偏移量。

seek 指定輸出文件的偏移量。

conv 用指定的參數轉換文件。其中,conv=notrunc 表示不截短輸出文件,比如輸入文件的大小小於輸出文件,不指定該參數,輸出的文件會變短。

 

ar:

-c 創建一個庫,不管這個庫存在與否。

-r 插入模塊。

-s 寫入目標索引到庫中。

例:ar -rcs lib.a a.o b.o c.o #將a.o b.o c.o三個工程文件打包進lib.a中。簡單來講,通常情況下編譯文件:ld test.o a.o b.o c.o -o test.out ,用ar打包後:ld test.o lib.a -o test.out。可以簡化文件的編譯量。

-v 程序執行時顯示詳細信息。

 

zip:

例:zip -r test.zip abc  #將abc目錄壓縮成zip文件

unzip:

例:unzip test.zip #解壓test.zip

 

mv:

例:mv 123.txt test   #將123.txt移入test目錄 

 

pwd:

#顯示當前目錄的絕對路徑

 

tar:

*.tar 用 tar –xvf 解壓
*.tar.gz和*.tgz 用 tar –xzf 解壓
*.tar.bz2用tar –xjf 解壓
*.tar.Z 用tar –xZf 解壓
*.tar.xz 先用xz -d 解壓,然後用tar -xvf解壓

 

clear:

#清空屏幕

 

rm:

例:rm -f test.txt  #強制刪除test.txt

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