实验三 Make工程管理器

实验三 Make工程管理器

【实验目的】

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 <stdio.h>
#include "add.h"
#include "sub.h"
#include "mux.h"
#include "div.h"
int main(void)
{
	float a,b;
	scanf("%f", &a);
	scanf("%f", &b);  
	add(a,b);
	sub(a,b);
	div(a,b);
	mux(a,b);
}

add.h

extern void add(float a,float b);

add.c

#include <stdio.h>
void add(float a,float b)
{
	printf("%f+%f=%f\n",a,b,(a+b));
}

sub.h

extern void sub(float a,float b);

sub.c

sub.c
#include <stdio.h>
void sub(float a,float b)
{
	printf("%f-%f=%f\n",a,b,(a-b));
}

div.h

extern void div(float a,float b);

div.c

#include <stdio.h>
void div(float a,float b)
{
	printf("%f/%f=%f\n",a,b,(a/b));
}

mux.h

extern void mux(float a,float b);

mux.c

#include <stdio.h>
void mux(float a,float b)
{
	printf("%f*%f=%f\n",a,b,(a*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)
全部评论

相关推荐

有没有什么神仙小厂啊!想去,感觉对大厂去魅了
野猪不是猪🐗:小厂最大的问题就是,你不知道哪天公司就直接🈚️了。大厂被裁,拿着大厂履历也不难再找,小厂寄了那后面有没有人要你就不好说了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
2024-11-22 17:03
广西师范大学 C++
佛系牛牛:多写一点,不要太多空白
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务