makefile的编写和使用

来源:互联网 发布:知进退呼为神 编辑:程序博客网 时间:2024/06/04 08:31

今天看了GCC编译器和GDB调试,用几个小程序测试了一下,感觉挺简单的,但是可能习惯了以前的IDE环境编程,对使用命令总感觉有点不太适应,尤其是有多个头文件的程序,编译过程显得有点麻烦,再让后看,又出现了makefile和make的概念,原来这就是为了解决多个头文件的程序的编译问题。makefile算是一种脚本语言,使用make命令前,必须先在当前工程下,编写makefile文件,然后编写完成后,执行make命令,完成之后就会产生可执行文件。

makefile的基本格式:

目标:与目标依赖的各种目标文件

[tab]       执行条件

example: target: test.o   test1.o

gcc  -o target test.o test1.o

test.o:test.c

gcc -c  test.c

......

clean:

rm -rf target

rm -rf *.o

其中,clean是一个命令,在执行make clean命令时,会把编译好的target和.o文件删掉。

关于make命令:当我们输入make命令执行时,系统会自动的再当前目录下寻找Makefile或者makefile

我的第一个makefile:

目标:res

C file:test.c myfile.c

H file:myfile.h

先写test.c:

#include<stdio.h>#include"myfile.h"int main(){      int num;      printf("input a number:");      scanf("%d",&num);      printf("the sum is:",sum(m));      return 1;}
再写myfile.c:
<pre name="code" class="html">#include<stdio.h>int s(int m){      int a=0,i;      for(i=0;i<=m;i++)      {               a += i;      }       return a;}

再写myfile.h:

<pre name="code" class="html">#ifndef __MYFILE_H__#define __MYFILE_H__int s(int m);#endif


最后是makefile文件的编写:
<pre name="code" class="html">res:test.o myfile.o        gcc -o res test.o myfile.otest.o:test.c             gcc -c test.cmyfile.o:myfile.c myfile.h                gcc -c myfile.cclean:                 rm -rf res                 rm -rf *.o


最后,执行make命令即可。

makefile的简化:

makefile有三个非常有用的变量:$@, $^ ,$<.

$@-----目标文件;$^------所有的依赖文件;$<------第一个依赖文件。

因此,上述makefile可以改写为:

res:test.o myfile.o         gcc -o $@ $^test.o:test.c            gcc -c $<myfile.o:myfile.c myfile.h               gcc -c $<clean:                rm -rf res                rm -rf *.o

makefile就先学到这里!

0 0
原创粉丝点击