2019-2020-1 20175320 《信息安全系統設計基礎》第三週學習總結

2019-2020-1 20175320 《信息安全系統設計基礎》第一週學習總結

1、教材學習內容總結

本週咱們瞭解並練習了gcc的使用,並在此基礎上進行gdb以及makefile的使用。圍繞gcc,本週的內容能夠分爲如下幾部分:利用gcc的-E、-S、-c這三個參數對c文件進行逐步編譯;將c文件中的函數轉化爲函數庫,並對庫函數進行調用;使用makefile對程序進行自動編譯;使用gdb調試程序。在本博客中我使用了老師提供的main.c程序做爲例子,下圖爲程序代碼。
html

使用gcc的-E、-S、-c這三個參數對c文件進行逐步編譯

  • 此處須要注意的是,這三個參數的大小寫不可隨意更改,且有這些參數的命令不能同時對多個文件進行操做。
  • 若進行操做的文件不在當前目錄,能夠在文件名前加上文件路徑。
  • 多模塊操做時,能夠將多個c文件直接編譯成可執行文件,也可將c文件先編譯成.o文件,再將.o文件進行連接。
  • 在進行編譯的過程當中,warning提示是能夠忽略的,並不影響過程的進行。
    該部分的部分過程以及運行結果以下圖:

將c文件中的函數轉化爲函數庫,並對庫函數進行調用

  • 靜態庫與動態庫的生成過程十分類似,都是先編譯並彙編獲得所調用函數的可重定位目標程序,而後經過命令基於這些文件生成庫文件,最後在編譯主程序的過程時經過-L以及-l參數將主程序與函數庫連接起來
  • 當進行操做的文件不在當前目錄時,能夠在文件前添加路徑來找到文件。
    該部分的部分過程以及運行結果以下圖:
    靜態庫:

    動態庫:

使用makefile對程序進行自動編譯

  • 編寫好makefile文件後,可使用make命令對文件進行自動編譯,makefile代碼中進行操做的文件若是不在makefile文件所在的目錄,須要在文件名前添加文件路徑
    本例的makefile代碼如圖:

    makefile的運行結果以下:

    本例的文件結構以下圖:

使用gdb調試程序

  • 在使用gdb進行調試時,須要使用-g參數對c文件進行編譯
    在這裏我仍然使用main.c做爲例子,gdb各命令的結果以下圖所示:
    gdb編譯:

    gdb list命令:

    gdb info查看斷點:

    gdb next命令:

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

這周的內容並不困難,沒有遇到十分難以解決的問題。java

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

  • 問題1:按照ppt編寫makefile文件,運行時顯示找不到文件。
  • 問題1解決方案:修改makefile代碼,在操做文件名前添加文件路徑。
  • 問題2:gdb調試時使用step命令沒法進行數據輸入。
  • 問題2解決方案:使用next命令調試程序。

4、代碼託管

5、上週考試錯題總結

  • 上週無測試。

6、其餘(感悟、思考等,可選)

在本週的內容中,我瞭解了多種編譯的方式,直接編譯、生成庫函數、編寫makefile代碼。而碰到的問題絕大多數都與文件路徑有關,這提示我在平常的電腦使用中必定要注意文件的路徑,注意不要隨意更改一個文件的位置。git

7、學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 3000行 25篇 300小時
第一週 54/54 1/1 13/13

嘗試一下記錄「計劃學習時間」和「實際學習時間」,到期末看看能不能改進本身的計劃能力。這個工做學習中很重要,也頗有用。 耗時估計的公式 :Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。安全

參考:軟件工程軟件的估計爲何這麼難軟件工程 估計方法函數

參考資料

相關文章
相關標籤/搜索