我的第一个makefile
最近学到了makefile的文件的编写。makefile是一个能达到方便编译链接生成目标程序的文件,
make确实很方便,在写makefile的过程也能更好的理解gcc编译器执行生成可执行文件的全过程。这里是我
的第一个makefile的编写。
makefile根据依赖,逐步解析生成目标文件。
首先指定all:ef 生成最终目标文件ef
生成ef的前提是依赖ef:total.o sum.o mul.o 三个目标文件。
并且我们要指定gcc的执行 gcc -o ef total.o sum.o mul.o
由于生成ef需要三个*.o文件,所以我们要生成三个*.o文件。
生成total.o 需要文件total.c
生成sum.o 需要文件sum.c
生成mul.o 需要文件mul.c
所以我们指定生成依赖关系,然后指定gcc执行过程。
当执行make时,make会根据他们之间的依赖关系生成目标文件。
在第一编写makefile的过程中我遇到下面的两个问题,其实这也是新手常范的错误
1:在“:”后面不能用空格。
2:gcc 前面用空格代替了Tab,导致makefile执行失败。
下面是sum.c mul.c total.c 的代码内容
//sum.c
int sum_one(void) { int sum = 0,i = 1; while(i<=10) { sum += i; ++i; } return sum; }
//mul.c int mul_two(void) { return (2*5*8*10*14); }
//total.c #include"stdio.h" int main(void) { char ch ; scanf("%c",&ch); while(ch!='1'&&ch!='2'&&ch!='q'&&ch!='Q') { printf("input error,please enter again!"); scanf("%c",&ch); } switch(ch) { case '1': printf("The sum of from 1 to 10 is %d ",sum_one()); break; case '2': printf("The mul of 2 , 5, 8 ,10 ,14 is %d ",mul_two()); break; default: return 0; } return 0; }
make执行过程
哈哈,第一个makefile