Linux环境下写一个 简单的 makefile
当我们有多个源程序时,用gcc每个都编译,这样我们没有修改过的源文件也得重新编译一次,很麻烦,这事写makefile就派上了用场,可以大大的提高我们的编码和调试速度。为此:
1.计划写三个函数及两个头文件,分别是:
main.c
- #include "sum.h"
- #include "max.h"
- int main(int argc,char **agrv)
- {
- int a,b;
- sum_print();
- printf("Please input two number:/n");
- scanf("%d,%d",&a,&b);
- max_print(a,b);
- }
sum.h
- /*sum.h*/
- #ifndef SUM_H
- #define SUM_H
- void sum_print();
- #endif
sum.c
- #include "sum.h"
- void sum_print()
- {
- int i,sum=0;
- for(i=0;i<10;i++)
- {
- sum+=i;
- }
- printf("Sum=%d/n",sum);
- }
max.h
- #ifndef MAX_H
- #define MAX_H
- void max_print(int a,int b);
- #endif
max.c
- #include "max.h"
- void max_print(int a,int b)
- {
- if(a>b)
- {
- printf("The Max Number is:%d/n",a);
- }
- else
- {
- printf("The Max Number is:%d/n",b);
- }
- }
2.编写makefile文件,文件名为 makefile,makefile内容如下:
- main: main.o sum.o max.o
- gcc -o main main.o sum.o max.o
- main.o: main.c sum.h max.h
- gcc -c main.c
- sum.o: sum.c sum.h
- gcc -c sum.c
- max.o: max.c max.h
- gcc -c max.c
3.进入终端;
[lxiron@FedoraOS myfolder]$ make
4.按理应该输入make makefile, 但默认输入 make时,会自动在该目录下寻找makefile文件。
[lxiron@FedoraOS myfolder]$ ./main
5. 输入 ./main 运行生成的目标文件
Sum=45
6.得出 Sum的结果;
Please input two number:
7.提示输入两个数字;
45,90
8.我们输入数字为 45,90;
The Max Number is:90
9.计算出最大数为:90;
[lxiron@FedoraOS myfolder]$
10.总结 makefile的规则。
target:components
tab rule
第一行是依赖关系;如 我们makefile文件的第一行目标(target)main:依赖对象(components)main.o sum.o max.o
第二行是规则,第二行的 tab空行不能少,我刚开没有注意这个问题,导致的我找原因找了好久!当依赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令。
posted on 2014-03-18 16:15 berkeleysong 阅读(189) 评论(0) 编辑 收藏 举报