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空行不能少,我刚开没有注意这个问题,导致的我找原因找了好久!当依赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令。
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空行不能少,我刚开没有注意这个问题,导致的我找原因找了好久!当依赖的对象在目标修改后修改的话,就要去执行规则一行所指定的命令。
相关文章推荐
- Linux环境下写一个 简单的 makefile
- Linux环境下部署完JDK后运行一个简单的Java程序
- linux下编写的一个最简单的Makefile文件
- Linux下书写一个简单的makefile
- Linux下,使用Makefile文件编写一个简单的彩色进度条
- 【Linux学习】 写一个简单的Makefile编译源码获取当前系统时间
- 一个简单的Makefile,辅助在Linux上练习笔试题用
- 一个简单c++工程在linux下的makefile写法
- 一个简单的Linux驱动程序和Makefile
- 树莓派开发板--Linux系统--ROS环境--实现一个简单的消息发布器和订阅器
- 【Linux学习】 写一个简单的Makefile编译源码获取当前系统时间
- 一个简单的Linux驱动程序和Makefile
- linux 一个超简单的makefile
- 由一个简单需求到Linux环境下的syslog、unix domain socket
- 由一个简单需求到Linux环境下的syslog、unix domain socket
- Linux环境下部署完JDK后运行一个简单的Java程序
- linux 一个超简单的makefile
- 一个简单的Linux驱动程序和Makefile
- 一个简单的linux driver Makefile
- [Linux学习]一个简单的Makefile入门