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 里所以只能引用一回 懒得改了 就这样吧

猜你喜欢

转载自blog.csdn.net/faith_girl/article/details/116275740