lunix 编写一个由多个文件构成的C语言程序,编制makefile,然后运行 make维护。

6.9设某个正在开发的程序由以下内容组成:
①4个C语言源文件: a.c、b.c、c.c和d.c,设b.c和d.c都使用了defs.h中的声明
②汇编语言源文件assmb.s被某个C语言源文件调用。
③使用了在/home/user/lib/libm.so 中的一组例程。
最后生成的可执行文件名为prog,试编写相应的makefile文件`

   woshiawoshibwoshicwoshidlunix[root@localhost cyuyan]# cat a.c
#include<stdio.h>
void a(){
printf("woshia");
}

[root@localhost cyuyan]# cat b.c
#include<stdio.h>
void b(){
printf("woshib");

}

[root@localhost cyuyan]# cat c.c
#include<stdio.h>
void c(){
printf("woshic");
}

[root@localhost cyuyan]# cat d.c
#include"defs.h"
void d(){
printf("woshid");
}

[root@localhost cyuyan]# cat defs.h
#include<stdio.h>
extern void a();
extern void b();
extern void c();
extern void d();
int main(){
a();
b();
c();
d();
printf("lunix");
}

                                                                                                                            
~                                                                                                                                       
~          

Makefile文件里写

[root@localhost cyuyan]# cat Makefile
#file4:file4.c
#	gcc fa.o b.o c.o d.o assmb.o -L/home/user/lib -lm –o progle.c -o file4
obj=a.o b.o c.o d.o 
prog:$(obj)
	gcc $(obj) -L/usr/include -lm -o prog
a.o:assmb.s
	gcc -c assmb.s -o a.o
assmb.s:assmb.i
	gcc -S assmb.i -o assmb.s
assmb.i:a.c
	gcc -E a.c -o assmb.i
b.o:b.c
	gcc -c  b.c -o b.o
c.o:c.c
	gcc -c c.c -o c.o
d.o:d.c
	gcc -c d.c -o d.o




最后 make 运行一下

[root@localhost cyuyan]# make
gcc -E a.c -o assmb.i
gcc -S assmb.i -o assmb.s
gcc -c assmb.s -o a.o
gcc -c  b.c -o b.o
gcc -c c.c -o c.o
gcc -c d.c -o d.o
gcc a.o b.o c.o d.o  -L/usr/include -lm -o prog
[root@localhost cyuyan]# ./prog
woshiawoshibwoshicwoshidlunix[root@localhost cyuyan]# cat a.c


注 /usr/include 这里要写你自己的库函数路径
例:
在这里插入图片描述
还有一点不足 我只在d.c里引用了defs.h的头文件 b.s没有 因为我把main 函数写到了defs.h 里所以只能引用一回 懒得改了 就这样吧

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

临夏_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值