1、gcc
gcc -e //預處理 test.c -o test.i -m32(32位機器)//#define #include //
gcc -s //編譯 **.s
gcc -c //彙編 **.o .o檔案 可重定位的目標檔案
//鏈結
readelf 檢視elf檔案-h檢視檔案的頭 test.o
-a列出所有資訊
gcc test.c -wall (顯示所有警告)
file test.i
vim test.i
預處理:
詞法分析 lex
語法分析
語義分析
中間**
pe windows下可執行檔案的格式
elf liux 下可執行檔案的格式
虛擬記憶體空間大小為4個g
nm 看符號表
main 函式執行起來後第乙個函式是_start
abi 二進位制介面不一樣
strip main 刪除符號資訊,給檔案**
objdump -ds main 檢視符號main函式的符號資訊
volatile(阻止編譯優化)
o1 o2 o3 優化最高等級(省略很多東西)
2、1)liux偵錯程式-gdb使用:
除錯要加-g選項
l(list)
l num
l function
設定斷點 b 19(行)或b 函式名
b 行號 if i==9(條件) 設定條件斷點
i b 檢視設定的斷點資訊
r 執行
n 執行下一步(f10)
whatis 檢視型別
print 列印變數的值
d 斷點編號 刪除斷點
finish 執行到當前函式的返回
gdb a.out 除錯
2)valgrind a.out 檢測程式記憶體有沒有洩露
3)top 看記憶體使用情況
shift >下翻
shift < 上翻
bt 函式呼叫棧
除錯core程式
1、gcc -g;//重新編譯
2、ulimit -c unlimited;//讓它的大小不受限制
3、./a.out
4、gdb a.out core.***//執行到core的地方
gcc -v顯示所有詳細資訊
Linux 學習筆記 gcc初體驗
大部分內容 用vmware裝了個ubuntu的虛擬機器嗎,前坑未填,又增新坑。在這裡學了一下,基本的目錄結構 目錄管理的生存向命令 vim的基本操作 好了!開始填坑!ctrl alt t 開啟終端 pwd 顯示當前目錄 cd 切換目錄 接下來主要說明gcc的用法 1.單個檔案的編譯 首先通過vim建...
gcc學習筆記
1 連線標頭檔案 gcc i usr openwim include fred.c 使用 i 標誌來包含儲存在子目錄或者非標準位置的中的標頭檔案。例如上邊語句指示編譯器不僅在標準位置,也在 usr openwim include 目錄中查詢程式 fred.c包含的標頭檔案。2 連線庫檔案 a 靜態庫...
gcc 學習筆記
gcc 編譯程式的過程 預處理 pre processing 編譯 compiling 彙編 assembling 鏈結 linking 選項名 作用 o 產生目標 i s o 可執行檔案等 c 通知gcc取消鏈結步驟,即編譯原始碼並在最後生成目標檔案 e 只執行c預編譯器 s 告訴編譯器產生組合語...