【實驗目的】
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
add.h#include
#include
"add.h"
#include
"sub.h"
#include
"mux.h"
#include
"div.h"
intmain
(void
)
add.cextern
void
add(
float a,
float b)
;
sub.h#include
void
add(
float a,
float b)
sub.cextern
void
sub(
float a,
float b)
;
div.hsub.c
#include
void
sub(
float a,
float b)
div.cextern
void
div(
float a,
float b)
;
mux.h#include
void
div(
float a,
float b)
mux.cextern
void
mux(
float a,
float b)
;
不使用任何變數完成功能;#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,...