2018-2019 20165235 《信息安全系統設計基礎》第一周
測試1-vi
- 每個.c一個文件,每個.h一個文件,文件名中最好有自己的學號
- 用Vi輸入圖中代碼,並用gcc編譯通過
- 在Vi中使用K查找
printf
的幫助文檔 提交vi編輯過程截圖,要全屏,包含自己的學號信息
這是編寫好的文件以及文件夾目錄:
這是vi中的printf幫助文檔,首先cd src/main.c 通過hjkl鍵將光標移動到printf上去,按大寫的K即可:
這是編譯.c文件以及運行結果:
測試2-gcc測試
- 用
gcc
進行預處理,編譯,匯編,鏈接vi
輸入的代碼 - 生成的可執行文件中要有自己的學號
提交預處理,編譯,匯編,鏈接,運行過程截圖,要全屏,包含自己的學號信息
預處理:gcc -E -I include src/*.c -o bin/*.i
編譯:gcc -S -I include bin/*.i -o bin/*.s
匯編:gcc -c -I include bin/*.s -o bin/*.o
鏈接:cd bin
gcc *.o -o test
使用到的命令
1.
gcc -E .c -o .i
編譯預處理
2.gcc -S .i -o .s
產生匯編代碼
3.gcc -c .s -o .o
進行匯編
4.gcc * .o -o XXX
生成可執行文件
5.ls
顯示文件列表測試3-gdb測試
- 用gcc -g編譯vi輸入的代碼
- 在main函數中設置一個行斷點
- 在main函數增加一個空循環,循環次數為自己學號後4位,設置一個約為學號一半的條件斷點
提交調試過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
首先要gcc -g
來生成一個可執行文件,打開gdb調試,然後設置行斷點 b 9(第九行)
輸入r開始調試:
設置條件斷點:
gdb相關命令
1
.set args
可指定運行時參數。(如:set args 10 20 30 40 50 )
2.show args
命令可以查看設置好的運行參數。
3.run (r)
啟動程序。
4.pwd
顯示當前的所在目錄。
5.break
設置斷點,可以簡寫為b
6.b X
(整數) 設置斷點,在源程序第X行
7.b func
設置斷點,在func函數入口處
8.info b
查詢所有斷點
9.b X(整數) if i==X
測試4-靜態庫的測試
- 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.a靜態庫?main.c如何使用mymath.a?
提交靜態庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
加上-g將.c文件編譯成.o文件,輸入圖上指令生成一個mymath.a
的靜態庫文件,然後用mymath.a
文件生成一個可執行文件test
對可執行文件的調試:
測試5-共享庫
- 除了
main.c
外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.so共享庫?main.c如何使用mymath.so? 提交共享庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
輸入圖上代碼生成一個共享庫文件,並用共享庫文件生成一個可執行文件:
對可執行文件的調試:
測試6-Makefile
1 寫出編譯上面vi編輯代碼的makefile,編譯出來的目標文件為testmymath, 只用顯式規則就可以.
2 提交Make過程截圖,要全屏,包含自己的學號信息
首先 vim Makefile:(第二行開頭使用Tab鍵)
然後在shell中輸入make
運行生成的目標文件:
在編輯
makefile
文本時需註意:一個Makefile
文件主要含有一系列的規則,每條規則包含一下內容:一個目標,即make
最終需要創建的文件,如可執行文件和目標文件;目標也可以是要執行的動作,如‘clean’
;一個或多個依賴文件的列表,通常是編譯目標文件所需要的其他文件。之後的一系列命令,是make
執行的動作,通常是把指定的相關文件編譯成目標文件的編譯命令,每個命令占一行,並以tab
開頭。
2018-2019 20165235 《信息安全系統設計基礎》第一周