2018-2019-1 20165221 《信息安全系统设计基础》第一周学习总结
2018-2019-1 20165221 《信息安全系統設計基礎》第一周學習總結
教材學習總結
有關vim
- 打開方式:vim [文件名]
- 按i會進入insert模式,可以對代碼進行編輯
按Esc會進入普通模式,此時可以使用快捷鍵進行編輯,編輯方式為:
指令對應操作 h 向左移動光標 l 向右移動光標 j 向下移動光標 k 向上移動光標 w 移動到下一個單詞 vim的退出與保存
| :wq+回車鍵 | Esc+q! |
| Esc+Shift+zz | 無 |
有關gcc
- 明白編譯過程
| hello.c源程序 | 預處理(cpp) | gcc -E hello.c -o hello.i |
| hello.i修改過的源程序 | 編譯處理(ccl) | gcc -S hello.i -o hello.s |
| hello.s匯編程序 | 匯編處理(as) | gcc -c hello.s -o hello.o |
| hello.o可重定位的二進制目標程序 | 鏈接(ld) |
最終得到可執行的二進制目標程序hello
具體題目操作
題目一:vi
- 每個.c一個文件,每個.h一個文件,文件名中最好有自己的學號
- 用Vi輸入圖中代碼,并用gcc編譯通過
- 在Vi中使用K查找printf的幫助文檔
- 提交vi編輯過程截圖,要全屏,包含自己的學號信息
操作前準備:
將頭文件放在如下地址:
文件脈絡圖:
將.c文件放在src中
具體操作:
鍵入的指令:gcc -I/home/tx20165221/gcc.include
選擇生成靜態庫:
| gcc -c -I/home/tx20165221/gcc.include add.c sub.c mul.c div.c | 生成.o文件 |
| ar rcvs libmath.a add.o sub.o mul.o div.o | 生成靜態庫 |
| gcc main.c -omain -I/home/tx20165221/gcc.include -L. -lmath | 生成可執行文件main |
| ./main | 運行文件 |
運行結果截圖
遇到的問題
- 問題一:找不到頭文件的位置
問題一解決辦法:在后臺找到頭文件,右鍵查看其屬性
- 問題二:編譯運行失敗
問題而解決方法:輸入指令 gcc main.c -omain -I/home/tx20165221/gcc.include -L. -lmath漏掉了了L后的.
題目二:gcc測試
- 用gcc 進行預處理,編譯,匯編,鏈接vi輸入的代碼
- 生成的可執行文件中要有自己的學號
- 提交預處理,編譯,匯編,鏈接,運行過程截圖,要全屏,包含自己的學號信息
具體操作
| hello.c源程序 | 預處理(cpp) | gcc -E main.c -o main.i |
| main.i修改過的源程序 | 編譯處理(ccl) | gcc -S main.i -o main.s |
| main.s匯編程序 | 匯編處理(as) | gcc -c main.s -o main.o |
| main.o可重定位的二進制目標程序 | 鏈接(ld) |
鍵入./main運行
運行結果截圖:
- .o文件
- 最終運行截圖
題目三:gdb測試
- 用gcc -g編譯vi輸入的代碼
- 在main函數中設置一個行斷點
- 在main函數增加一個空循環,循環次數為自己學號后4位,設置一個約為學號一半的條件斷點
提交調試過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
具體操作:
設置斷點- 函數:b 文件名.c:函數名
- 行:b 行數
- 條件:b 行數 if 表達式(例如:b 9 if == 12)
- 臨時:tb [文件名:]行號或函數名 <條件表達式>
實踐過程
- gcc -g *.c -o main
- gdb main
- b main
- b 6 if i==5221
- info break
- r
q
運行截圖:
題目四:靜態庫的測試
- 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.a靜態庫?main.c如何使用mymath.a?
- 提交靜態庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
實踐過程
- ar cr math.a add.o sub.o mul.o div.o
- gcc main.c ./math.a -o main
運行截圖:
題目五:共享庫
- 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.so共享庫?main.c如何使用mymath.so?
- 提交共享庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
具體操作
共享庫的生成:
- gcc -fPIC -c xxx.c
- gcc -shared -o libxxx.so xxx.o;
共享庫的使用
- gcc -o main main.c -L. -lxxx
實際操作:
- 生成:
gcc -fPIC -c add.c sub.c mul.c div.c
gcc -shared -o libmymath.so add.o sub.o mul.o div.o
使用:gcc -o main main.c -L. -lmymath
運行截圖:
題目六:Makefile
寫出編譯上面vi編輯代碼的makefile,編譯出來的目標文件為testmymath, 只用顯式規則就可以.
提交Make過程截圖,要全屏,包含自己的學號信息
具體操作
makefile文件編寫規則:
目標文件 :由make創建,通常是目標文件或可執行文件
依賴文件 :創建目標體所依賴的文件
運行命令 :創建每個目標體時需要的運行命令,必須以tab鍵開頭,格式為:目標文件:依賴文件列表 [tab鍵]各目標體運行命令(注意不是空格)
使用make的格式:make目標文件
實際操作:
- 輸入vim Makefile,輸入i進入編輯模式,輸入代碼并保存
- 輸入 make, 進行自動化編譯
- 執行 ./testmymath 查看結果
運行結果和編寫的makefile截圖:
代碼統計
- 上學期的statistics.sh被自己刪了,在網上查找代碼統計方法,鍵入sudo apt-get install cloc下載安裝,即可。
轉載于:https://www.cnblogs.com/0630tx/p/9692235.html
總結
以上是生活随笔為你收集整理的2018-2019-1 20165221 《信息安全系统设计基础》第一周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PXE(preboot executio
- 下一篇: 坑题