1. 程式人生 > ># 2018-2019-1 20165206 《信息安全系統設計基礎》第1周學習總結

# 2018-2019-1 20165206 《信息安全系統設計基礎》第1周學習總結

分享圖片 時報 header 如果 mbo table string con 常用

2018-2019-1 20165206 《信息安全系統設計基礎》第1周學習總結

教材學習內容總結

- gcc編譯:

預處理:gcc -E hello.c -o hello.i

編譯:gcc -S hello.i -o hello.s

匯編:gcc -c hello.s -o hello.o

鏈接:gcc hello.o -o hello

- gdb調試:

編譯生成可執行文件:gcc -g hello.c -o hello

進入gdb調試界面:gdb test

部分常用指令:

查看代碼(默認10行):list

設置行斷點:break 5
(停在第5行)

設置條件斷點:break 5 if n=6
(如果n的值為6,則程序運行到第5行停止)

執行下一行:next

繼續運行:continue

幫助信息:help

開始運行程序:run

清除斷點:clear

退出:quit

參考:linux下如何使用gdb調試

- 靜態庫

生成.o文件:gcc -c -I/頭文件所在路徑 add.c sub.c mul.c div.c

生成靜態庫:ar rcvs libmath.a add.o sub.o mul.o div.o

生成可執行文件main:gcc main.c -o main -I/頭文件所在路徑 -L. -lmath

技術分享圖片

- 動態庫

生成.o文件:gcc -fPIC -c -I/頭文件所在路徑 add.c sub.c mul.c div.c

生成動態庫:gcc -shared -o mymath.so add.o sub.o mul.o div.o

將文件libmath.so復制到目錄/lib中

生成可執行文件main:gcc main.c -o main -I/頭文件所在路徑 -L.lmath

技術分享圖片

- Makefile

創建:vim Makefile

- 教材學習中的問題和解決過程

  • 問題1:a.out是什麽?有什麽含義嘛?

  • 問題1解決方案:a.out 是linux/unix環境下gcc編譯源代碼(c/c++)並連接產生的默認執行文件名。a.out是由OMAGIC, NMAGIC, QMAGIC, 或者 ZMAGIC發展過來的一種可執行文件格式。一個典型的a.out文件由一下7部分組成:exec header:文件頭、text segment:代碼段、data segment:數據段、text relocations:代碼重定向
    、data relocations:數據重定向、symbol table:符號表、string table:字符串表。

- 代碼調試中的問題和解決過程

  • 問題1:編譯main.c時報錯

技術分享圖片

  • 問題1解決方案:要編譯包括各個函數在內的所有.c文件,*.c

技術分享圖片

  • 問題2:鏈接時不成功,報錯。

  • 問題2解決方案:要將包括4個函數在內的所有.o文件都放到bin文件夾中才可以。

技術分享圖片

  • 問題3:運行Makefile時報錯。

  • 問題3解決方案:書寫Makefile時要用Tab空行後再書寫命令。

技術分享圖片

感悟

這周的學習困難不少,收獲也是挺大的。知道了一些在Linux下c語言文件處理的操作,以及一些相關知識。新的學期新的挑戰,繼續加油,努力學習。

# 2018-2019-1 20165206 《信息安全系統設計基礎》第1周學習總結