您的位置:首页 > 运维架构 > Linux

Linux环境下写一个 简单的 makefile

2015-03-23 18:04 399 查看
当我们有多个源程序时,用gcc每个都编译,这样我们没有修改过的源文件也得重新编译一次,很麻烦,这事写makefile就派上了用场,可以大大的提高我们的编码和调试速度。为此:

1.计划写三个函数及两个头文件,分别是:

main.c

[cpp] view
plaincopy

#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

[cpp] view
plaincopy

/*sum.h*/

#ifndef SUM_H

#define SUM_H

void sum_print();

#endif

sum.c

[cpp] view
plaincopy

#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

[cpp] view
plaincopy

#ifndef MAX_H

#define MAX_H

void max_print(int a,int b);

#endif

max.c

[cpp] view
plaincopy

#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内容如下:

[cpp] view
plaincopy

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空行不能少,我刚开没有注意这个问题,导致的我找原因找了好久!当依赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: