20155337 2017-2018-1 《信息安全系統設計基礎》第二周課堂實踐+myod
因為在課上已經提交了四個實驗,還欠缺最后一個實驗,反省一下自己還是操作不熟練,平時在課下應該多多練習linux的命令訓練。
實踐一
- 每個* .c一個文件,每個*.h一個文件,文件名中最好有自己的學號
- 用Vi輸入圖中代碼,并用gcc編譯通過
- 在Vi中使用K查找printf的幫助文檔
- 提交vi編輯過程截圖,要全屏,包含自己的學號信息
截圖
在課堂實踐一中,我們應該把所有的文件放在一個新的自己創建的文件夾里,這樣用gcc編譯的時候才不會出錯,頭文件也不會出現找不到的情況,因為自己做的時候沒有注意到這一點所以課堂實踐一做的很慢。
實踐二
- 用gcc 進行預處理,編譯,匯編,鏈接vi輸入的代碼
- 生成的可執行文件中要有自己的學號
- 提交預處理,編譯,匯編,鏈接,運行過程截圖,要全屏,包含自己的學號信息
截圖
課堂實踐二做起來就得心應手多了,按照老師的要求將命令輸入就可以啦,但要注意編譯的順序
1.gcc -E .c -o .i 編譯預處理
2.gcc -S .i -o .s 產生匯編代碼
3.gcc -c .s -o .o 進行匯編
4.gcc * .o -o XXX 生成可執行文件
實踐三
- 用gcc -g編譯vi輸入的代碼
- 在main函數中設置一個行斷點
- 在main函數增加一個空循環,循環次數為自己學號后4位,設置- 一個約為學號一半的條件斷點
- 提交調試過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
截圖
實驗三是gdb調試代碼,在調試代碼中注意下面的命令
- run 簡寫為r,這個命令是用來運行程序的,在一開始需要現運行程序
- break 簡寫為不,這個命令是設置斷點的命令,也是我們調試的時候需要用到的重要命令
- b X(整數) 設置斷點,在源程序第X行
- b X(整數) if i==X 設置條件斷電,在for循環后一行設置。
-next 簡寫為n,這個命令是跳過函數進行下一行代碼的調試。
-step 簡寫為s,這個命令是調試進入函數并循環。
-quit 簡寫為q,這個命令是退出單步調試環節。
實踐四
- 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.a靜態庫?main.c如何使用mymath.a?
- 提交靜態庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
截圖
靜態庫的這個實踐是詢問同學的前提下,按照課本上的代碼一步一步寫下來的,創建了靜態庫。
實踐五
- 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.so共享庫?main.c如何使用mymath.so?
- 提交共享庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
截圖
和靜態庫一樣,也是按照課本上一步一步寫代碼就實現了動態庫。這里需要用到使用到的命令gcc -shared -fpic -o XX.so XX1.c 這條命令。
實踐六
-寫出編譯上面vi編輯代碼的makefile,編譯出來的目標文件為testmymath, 只用顯式規則就可以.
-提交Make過程截圖,要全屏,包含自己的學號信息
截圖
使用到的命令
- vi makefile寫makefile文本
- 保存后退出輸入make
- 輸入./testmymath
myod
- 復習c文件處理內容
- 編寫myod.c 用myod XXX實現Linux下od -tx -tc XXX的功能
- main與其他分開,制作靜態庫和動態庫
- 編寫Makefile
- 提交測試代碼和運行結果截圖,要全屏,包含自己的學號信息
截圖