# 20155336 2017-2018 1 《信息安全系統設計基礎》2017-9-27課堂實踐
阿新 • • 發佈:2017-09-29
如何 虛擬機的基本操作 ast 功能 創建 main函數 編輯 file ref
20155336 2017-2018 1 《信息安全系統設計基礎》2017-9-27課堂實踐
第一題:vi
- 每個.c一個文件,每個.h一個文件,文件名中最好有自己的學號
- 用Vi輸入圖中代碼,並用gcc編譯通過
- 在Vi中使用K查找printf的幫助文檔
-
提交vi編輯過程截圖,要全屏,包含自己的學號信息
說起來很慚愧,第一次接觸虛擬機,對很多地方都陌生,正好趁學習這門課程掌握一下虛擬機的基本操作。 首先創建一個文件夾,命名為text1。然後將第一道題的要求都錄入進去。錄入完畢後,輸入`gcc *.c`, 發現了錯誤,然後`vi`進入到.c的文件中,修改了錯誤再次編譯一遍,沒有錯誤,然後就輸出`./a.out`
代碼鏈接
第二題:gcc測試
- 用gcc 進行預處理,編譯,匯編,鏈接vi輸入的代碼
- 生成的可執行文件中要有自己的學號
-
提交預處理,編譯,匯編,鏈接,運行過程截圖,要全屏,包含自己的學號信息
第二題,按照第一節課課上記得筆記,在課下自己實踐。雖然中間粗心代碼出現錯誤,但是問題不大
代碼鏈接
第三題:gdb測試
- 用gcc -g編譯vi輸入的代碼
- 在main函數中設置一個行斷點
- 在main函數增加一個空循環,循環次數為自己學號後4位,設置一個約為學號一半的條件斷點
-
提交調試過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
這道題出現了很多問題,首先下載GDB,然後在設置了條件斷點之後,程序調試的時候沒有在斷點處停下。在空循環中加個打印空行再設置條件斷點然後運行就可以了。(中間由於很多次自己都忘記了編譯~~~~~導致每次都會顯示自己定義的n沒有定義。)
代碼鏈接
第四題:靜態庫測試
- 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.a靜態庫?main.c如何使用mymath.a?
-
提交靜態庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
這道題將自己的代碼編譯為以下形式: gcc -c add.c -o add.o gcc -c sub.c -o sub.o gcc -c mul.c -o mul.o gcc -c div.c -o div.o 然後使用ar創建一個存檔文件:ar rcs mymath.a add.o sub.o mul.o div.o 編譯的時候再將程序和mymath.a鏈接起來:gcc -static -o link1 main.o mymath.a 接著運行就可以了!
第五題:共享庫
- 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.so共享庫?main.c如何使用mymath.so?
-
提交共享庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息
創建一個共享文件 gcc -shared -fpic -o mymath.so add.c sub.c mul.c div.c 創建一個可執行的目標文件 gcc -o link2 main.c ./mymath.so 運行即可
代碼鏈接
Myod:
1 復習c文件處理內容
2 編寫myod.c 用myod XXX實現Linux下od -tx -tc XXX的功能
-
main與其他分開,制作靜態庫和動態庫
-
編寫Makefile
5 提交測試代碼和運行結果截圖, 提交調試過程截圖,要全屏,包含自己
# 20155336 2017-2018 1 《信息安全系統設計基礎》2017-9-27課堂實踐