make和gdb的簡單應用

2021-07-05 20:47:24 字數 1970 閱讀 4970

a、以下是本次實驗的內容一:

①例項檔案有六個原始檔 和六個標頭檔案 分別是:func1.c  func2.c func3.c  func4.c  func5.c  main.c head1.h  head2.h  head3.h head4.h head5.h  head.h

②編寫makefile檔案,要求實現:執行make時,能對源**進行編譯、鏈結,生成可執行檔案main.exe;執行make clean時,能清除之前編譯生成的所有中間檔案和可執行檔案,僅保留原始檔;執行makeinstall時,能在當前目錄建立乙個子目錄bin,並且把可執行檔案main.exe移動bin子目錄。

可以通過 gcc -mm *.c >> makefile  得到各個檔案的依賴關係。

注意:每條gcc命令 前面是乙個 tab鍵

第乙個實驗通過gcc-mm func1.c >> makefile ,再通過修改makefile檔案完成 在終端輸入make後自動執行編譯鏈結生成可以執行那個檔案。make clean 會根據題目要求自動刪除所有.o檔案和可執行檔案。makeinstall 會執行 mkdir bin 以及 mv main.exe ./bin/main.exe兩條指令完成

makefile 檔案內容:

main.exe: main.o func1.o func2.o func3.o func4.o func5.o 

gcc -o main.exe *.o

func1.o: func1.c head.h head1.h

gcc -c func1.c

func2.o: func2.c head.h head2.h

gcc -c func2.c

func3.o: func3.c head.h head3.h

gcc -c func3.c

func4.o: func4.c head.h head4.h

gcc -c func4.c

func5.o: func5.c head.h head5.h

gcc -c func5.c

main.o: main.c head.h

gcc -c main.c

clean:

-rm *.o main.exe

install:

-mkdir bin

-mv main.exe ./bin/main.exe

b、以下是本次實驗的內容二,下面這段**有錯誤,請用gdb除錯,寫出除錯過程並修正程式。這個程式被稱為 greeting,它顯示乙個簡單的問候, 再用反序將它列出。
#include 

#include 

int main (int argc, char *argv)

void my_print (char *string)

void my_print2 (char *string)

最終正確輸出

the string ishello there

the string printedbackward is ereht olleh

錯誤修改如下:

for (i = 0; i

string2[size - i] = string[i];

改為:for (i = 0; i

string2[size - i-1] = string[i];

print size 得到原來的字串長度為11,dispaly *string2@11 用來跟蹤字串的變化,通過產看最後結果,可以發現string2的首字元始終為0,因此發現問題。

利用 run 、 next 以及display 可以檢視到陣列隨著程式執行的變化,發現最終結果字串string2 的整體剛好後移了1位。

Linux開發工具 gdb和make

gdb主要有以下幾個方面的功能 1 啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。2 可讓被除錯的程式在你所指定的調置的斷點處停住。斷點可以是條件表示式 3 當程式被停住時,可以檢查此時你的程式中所發生的事。4 你可以改變你的程式,將乙個bug產生的影響修正從而測試其他bug。進入gdb...

make的簡單使用

make 是乙個命令工具,makefile 是乙個文字檔案。他們的關係是 make是乙個解釋 makefile 中的指令的命令工具,makefile 的工作原理就是呼叫系統中的 make 命令解釋當前的 makefile。下面是make 乙個簡單的演示 首先編寫四個.c 檔案,分別取名 main.c...

嵌入式開發工具gdb和make

掌握嵌入式開發工具gdb和make的使用 1 嵌入式開發工具 gdb 2 嵌入式開發工具make 周五一天 gcc c 1.c gcc wall 1.c 檢查1.c 有沒有問題 a.out 執行 1.什麼是工程 專案?專案 多個原始檔 資源檔案構成的專案 2.如何編譯多個原始檔的 1000個原始檔,...