红联Linux门户
Linux帮助

linux学习笔记六. makefile 文件管理器,及makefile文件的创建

发布时间:2008-09-09 21:14:18来源:红联作者:tanglun
分割源程序文件有利于开发大型程序与提高编写程序的效率。但文件分割的越多,编译维护就越

困难。为了防止在一个项目中由于只要一个或几个文件发生更改,而不需要重新编译整个项目。make工程

管理器是一个“自动编译器”,这里的“自动”是指它能够根据文件的时间擢自动发现更新过的文件而减

小编译的工作量。同时它通过读入makefile文件的内容来执行大量的编译工作。用户只要编写一次简单的

编译语句就可以了。
makefile文件包括:
1).需要有make工具创建的目标体(target),通常是目标文件或可执行文件
2).要创建的目标所依赖的文件
3).创建每个目标体时需要运行的命令
例:设计一个程序,要求计算学生的总成绩和平均成绩,并用make工程管理器编译。

步骤一
程序:1. #include
#include "chengji.h"
int main()
{
int n,i;
float average,sum;
scanf("%d",&n);
int array[n];
for(i=0;i<=n;i++)
{
printf("Please input the %dth student's score:");
scanf("%d",&arrary[i]);
}
sum=fun_sum(array,n); /*call fun_sum function*/
printf("the all students scores is:%d",sum);
average=fun_avg(array,n); /*call fun_avg function,return avg's value*/
printf("the average is:",average);
}

2. /*chengji.h is a head file,include the statement of fun_avg and fun_sum*/
float fun_sum(int var[],int num);
float fun_avg(int var[],int num);

3. /*fun_sum.c is fun_sum's difinition*/
float fun_sum(int var[],int num)
{
float avrg=0.0;
int i;
for(i=0;i avrg+=var[i];
return(avrg);
}

4. float fun_avg(int var[],int num)
{
float avrg=0.0;
int i;
for(i=0;i avrg+=var[i];
avrg/=num;
return (avrg);
}

步骤二
用文本文件编辑器,编辑makefile文件,编辑程序如下:
[....]#vi makefile1_1
2-5:2-5-main.o 2-5-fun_sum.o 2-5-fun_avg.o
gcc 2-5-main.o 2-5-fun_sum.o 2-5-fun_avg.o -o 2-5
2-5.main.o:2-5-main.c chengji.h
gcc 2-5-main.c -c
2-5-fun_sum.o:2-5-fun_sum.c
gcc 2-5-fun_sum.c -c
2-5-fun_avg.o:2-5-fun_avg.c
gcc 2-5-fun_avg.c -c

注:make编写规则
目标文件:依赖文件
(Tab)产生目标文件的命令

步骤三
用make编译makefile文件
[.....]#make -f makefile1_1

步骤四
若修改了某个文件,则再次编译只会从新编译更改过的文件
文章评论

共有 1 条评论

  1. cwqing1973 于 2008-09-10 21:25:54发表:

    请多写这方面的帖子,这对刚刚进入到Linux环境进行C/C++语言编程的人员有很大的帮助。而且希望你能把编程方面的学习笔记作一个整理,作一个系列放到红联上,谢谢。