linux學習筆記一(gcc)

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.XXX//運行到core的地方
gcc -v顯示所有詳細信息

發佈了66 篇原創文章 · 獲贊 19 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章