进一步深入Makefile
声明:文章中所用到的prog.c、code.c、code.h这三个文件来源于实验楼
一.编写3个文件
vim prog.c
#include <stdio.h>
#include "code.h"
int main(void)
{
int i = 1;
printf ("myfun(i) = %d\n", myfun(i));
}
vim code.c
#include "code.h"
int myfun(int in)
{
return in + 1;
}
vim code.h
extern int myfun(int);
二.编译方式
1.直接编译:
gcc -c code.c -o code.o
gcc -c prog.c -o prog.o
gcc -o test prog.o code.o 或者 gcc prog.o code.o -o test
./test
2.makefile编译
第一种方式:
test: prog.ocode.o
gcc prog.o code.o -o test #这个前面是tab按键,不要忘记
prog.o: prog.ccode.h
gcc -c prog.c -o prog.o #这个前面是tab按键,不要弄错
code.o: code.ccode.h
gcc -c code.c -o code.o #这个前面是tab按键,不要弄错
clean:
rm -f *.o test #这个前面是tab按键,不要弄错
第二种方式:
test: prog.ocode.o
gcc -o test prog.o code.o #这个前面是tab按键,不要弄错
clean:
rm -f *.o test #这个前面是tab按键,不要弄错
第三种方式:
LIBS=-lm
OBJS=prog.ocode.o
test:${OBJS}
gcc -o test ${OBJS} ${LIBS} #这个前面是tab按键,不要弄错
clean:
rm -f test ${OBJS} #这个前面是tab按键,不要弄错
这三种方法中,第三种的可移植性最好。
其中第三种方法还可以再改写:
LIBS=-lm
OBJS=prog.ocode.o
CC=gcc
test:${OBJS}
$(CC) -o $@ ${OBJS} ${LIBS} #这个前面是tab按键,不要弄错,$@代表当前的目标test
clean:
rm -f test ${OBJS} #这个前面是tab按键,不要弄错
Makefile文件的一般写法:
test(目标文件): prog.o code.o(依赖文件列表)
tab(至少一个tab的位置) gcc prog.o code.o -o test(命令)
.......