實驗三 Make工程管理器

2021-08-30 21:33:18 字數 3495 閱讀 2356

【實驗目的】

1、了解嵌入式linux程式設計環境;

2、掌握make工程管理方法;

3、掌握makefile檔案編寫和使用方法。

【實驗內容】

1、將乙個大檔案拆分成多個小檔案;

2、編寫makefile檔案完成多檔案編譯。

【實驗任務】

1、編寫計算器程式(calc)源程式,共9個檔案,檔案關係如下表所示:

檔名包含檔案

檔案功能說明

main.c

#include 「add.h」 #include 「sub.h」 #include 「mux.h」 #include 「div.h」

完成運算資料的獲取和運算結果的輸出

add.c

完成加法功能函式(add)的編輯

add.h

預編譯完成加法功能函式(add)的宣告

sub.c

完成減法功能函式(sub)的編輯

sub.h

預編譯完成減法功能函式(sub)的宣告

mux.c

完成乘法功能函式(mux)的編輯

mux.h

預編譯完成乘法功能函式(mux)的宣告

div.c

完成除法功能函式(div)的編輯

div.h

預編譯完成除法功能函式(div)的宣告

2、編寫makefile完成計算器程式(calc)的編譯,並通過假想目標(clean)清除目標檔案。

第一步:不使用任何變數完成功能;

第二步:使用自定義變數讓程式更加通用;

第三步:使用預定義變數讓程式更加通用。

完成每一步的makefile檔案編寫,並完成除錯。

main.c

#include

#include

"add.h"

#include

"sub.h"

#include

"mux.h"

#include

"div.h"

intmain

(void

)

add.h

extern

void

add(

float a,

float b)

;

add.c

#include

void

add(

float a,

float b)

sub.h

extern

void

sub(

float a,

float b)

;

sub.c

sub.c

#include

void

sub(

float a,

float b)

div.h

extern

void

div(

float a,

float b)

;

div.c

#include

void

div(

float a,

float b)

mux.h

extern

void

mux(

float a,

float b)

;

mux.c

#include

void

mux(

float a,

float b)

不使用任何變數完成功能;

makefile

main:main.o add.o sub.o mux.o div.o

gcc main.o add.o sub.o mux.o div.o -o main

main.o:main.c add.h sub.h mux.h div.h

gcc -c main.c -o main.o

add.o:add.c

gcc -c add.c -o add.o

sub.o:sub.c

gcc -c sub.c -o sub.o

mux.o:mux.c

gcc -c mux.c -o mux.o

div.o:div.c

gcc -c div.c -o div.o

clean:

rm *.o main

使用自定義變數讓程式更加通用;

makefile

cc=gcc

obj=main.o add.o sub.o mux.o div.o

target=main

objh=main.c add.h sub.h mux.h div.h

$(target):$(obj)

$(cc) $(obj) -o $(target)

main.o:$(objh)

$(cc) -c main.c -o main.o

add.o:add.c

$(cc) -c add.c -o add.o

sub.o:sub.c

$(cc) -c sub.c -o sub.o

mux.o:mux.c

$(cc) -c mux.c -o mux.o

div.o:div.c

$(cc) -c div.c -o div.o

clean:

rm *.o $(target)

使用預定義變數讓程式更加通用。

makefile

makefile

obj=main.o add.o sub.o mux.o div.o

target=main

objh=main.c add.h sub.h mux.h div.h

$(target):$(obj)

$(cc) $^ -o $@ $(cflags)

main.o:$(objh)

$(cc) -c $< -o $@ $(cflags)

add.o:add.c

$(cc) -c $< -o $@ $(cflags)

sub.o:sub.c

$(cc) -c $< -o $@ $(cflags)

mux.o:mux.c

$(cc) -c $< -o $@ $(cflags)

div.o:div.c

$(cc) -c $< -o $@ $(cflags)

clean:

rm *.o $(target)

工程管理器make

工程管理器make 命令tree 樹狀顯示目錄下的檔案 make命令 通過批處理來實現自動編譯 要想使用make必須要有 makefile 檔案 makefile三元素 目標 依賴命令 執行此命令,依賴該檔案來實現該目標 僅編譯hello.c的 makefile 檔案示例 hello hello.o...

make工程管理器

今天首先編寫了一道程式,有n個人圍成一圈,順序排號,從第乙個人開始報數 從1報到 3 凡報到 3的人退出圈子,問最後留下的是原來第幾號的那位。通過這道程式設計,對 c語言有了更深刻的理解。隨後又學習了 make 工程管理器的一些知識。首先是建立功能目錄 mkdir p add src mv add....

make工程管理器

工程管理器 make可以管理較多的檔案,自動編譯管理器 當然這裡也可以gcc add.c sub.c mul.c div.c main.c o main實現多檔案編譯過程 這裡主要介紹工程管理器make及makefile的使用 makefile是make讀入的唯一配置檔案,如果沒有makefile,...