# 2018-2019-1 20165206 《信息安全系統設計基礎》第1周學習總結
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周學習總結