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