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