C語言實現Linux命令——od


C語言實現Linux命令——od

實現要求:

- 第二周測試1-vi

  1. 每個.c一個文件,每個.h一個文件,文件名中最好有自己的學號
  2. 用Vi輸入圖中代碼,並用gcc編譯通過
  3. 在Vi中使用K查找printf的幫助文檔
  4. 提交vi編輯過程截圖,要全屏,包含自己的學號信息

image

依次輸入每個文件內容

使用命令gcc *.c一直編譯成功

第二周測試2-gcc測試

  1. 用gcc 進行預處理,編譯,匯編,鏈接vi輸入的代碼

  2. 生成的可執行文件中要有自己的學號

3.提交預處理,編譯,匯編,鏈接,運行過程截圖,要全屏,包含自己的學號信息

  • 一般格式為:gcc [選項] 要編譯的文件 [選項] 目標文件gcc -E hello.c -o hello.i

  • gcc將代碼翻譯成匯編語言,使用選項-S只進行編譯而不進行匯編,結果生成匯編代碼。gcc -S hello.i -o hello.s

  • 將.s文件轉成目標文件,使用選項-c可以看到匯編代碼轉換為二進制目標代碼。gcc -c hello.s -o hello.o

默認搜索鏈接到libc.so.6函數庫當中,調用庫文件中已經實現的函數。
運行:./hello

第二周測試3-gdb測試

  1. 用gcc -g編譯vi輸入的代碼
  2. 在main函數中設置一個行斷點
  3. 在main函數增加一個空循環,循環次數為自己學號后4位,設置一個約為學號一半的條件斷點
  4. 提交調試過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息

設置斷點

函數:b 文件名.c:函數名

行:b 行數

條件:b 行數 if 表達式(例如:b 9 if == 12)

臨時:tb [文件名:]行號或函數名 <條件表達式>

課堂實踐過程:

gcc -g *.c -o main
gdb main
b main
b 6 if i==2662
info break
r
q

第二周測試4-靜態庫的測試

  1. 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.a靜態庫?main.c如何使用mymath.a?

  2. 提交靜態庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息

靜態鏈接庫的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o;

靜態庫的使用:gcc -o 文件名 文件名.c -L. -lxxx

課堂實踐過程:

ar cr math.a add.o sub.o mul.o div.o

gcc main.c ./math.a -o main

第二周測試5-共享庫

  1. 除了main.c外,其他4個模塊(add.c sub.c mul.c div.c)的源代碼不想給別人,如何制作一個mymath.so共享庫?main.c如何使用mymath.so?

  2. 提交共享庫生成和調用過程截圖(一定包含條件斷點的),要全屏,包含自己的學號信息

共享庫的生成: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

第二周測試6-Makefile

1 寫出編譯上面vi編輯代碼的makefile,編譯出來的目標文件為testmymath, 只用顯式規則就可以.

2 提交Make過程截圖,要全屏,包含自己的學號信息

testmymath:MYOD.o change.o ascii.o

 gcc MYOD.o change.o ascii.o -o testmymath

MYOD.o:MYOD.c head.h

gcc -c MYOD.c

change.o:change.o head.h

gcc -c change.o

ascii.o:ascii.c head.h

gcc -c ascii.c

myod

實現od -tc -tx1 XXX命令,

-tc表示輸出ASCII字符,

-tx1表示以十六進制輸出,
每組輸出一字節。

動態庫

Makefile

代碼托管

參考:軟件工程軟件的估計為什么這么難軟件工程 估計方法

  • 計划學習時間:10小時

  • 實際學習時間:5小時

  • 改進情況:

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表
)

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM