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

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

命令補全 時間 命令 參數 目標 創建 float 方案 sub

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


教材內容總結

GCC編譯

1.單文件

  • 預處理: 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
  • 或者直接用ESC.iso

2.多模塊

一起編譯: gcc testa.c testb.c -o test 或者 gcc *.c -o test 分別編譯各個源文件,之後對編譯後輸出的目標文件鏈接

3.-I參數

.h文件放在include中,.c文件放入src中 用於指明頭文件路徑

*

GDB命令行界面使用技巧

  • 條件斷點
  • 設置斷點:b 5(如果要在第五行斷點)
  • 條件斷點:b 5 if i=5
  • 命令補全:TAB
  • 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
  • 調用:先後使用 gcc main.c -o main -I/頭文件所在路徑 -L. -lmath./main 來生成main文件並調用靜態庫執行文件

動態庫 生成:

  • 生成四個文件: 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
  • 調用: gcc -I/頭文件所在路徑 -o main main.c -L. -lmath

MakeFile

  • 創建:

    • vi makefile
  • 書寫:

    • targets : prerequisites
    • 或者targets : prerequisites ; command

學習過程中遇到的問題


  • 問題1:fatal error:找不到head.h

    • 解決方案:在上級目錄中輸入 gcc src/main.c -o src/main lib/libmath.a -I include
      生成main文件
  • 問題2:對於計算機運行代碼的原理仍存在不理解,不熟悉

    • 解決方案:記主ESC、ISO,

      • 預處理:gcc -E hello.c -o hello.i
      • 編譯:gcc -S hello.i -o hello.s
      • 匯編:gcc -c hello.s -o hello.o

      並多動手測試,不局限於課程中的案例。


學習進度條

代碼行數(新增/累積)博客量(新增/累積)學習時間(新增/累積)重要成長
目標 5000行 30篇 400小時
第一周 115/115 1/1 5/5


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