首页 > 代码库 > 单文件夹下的C程序如何编写Makefile文件

单文件夹下的C程序如何编写Makefile文件

  通过学习已经学会了GCC的一些基础的命令,以及如何将C语言源代码编译成可执行文件。

  我们已经知道在linux环境下编译源码时,常会有以下三个步骤:

    ./configure  

    make

    make clean

  执行./configure时,会检查系统的配置等,得到相关的有用的信息,生成Makefile文件。

  执行make命令时,make命令解释Makefile文件中的规则,生成目标文件。

  执行make clean会删除生成目标文件过程中的生成的中间文件。

  

  Makefile文件是可以由我们手工建立的:接下来是编写在同一个文件夹下的程序的Makefile文件。

  文件有compute.c与m.h,代码如下:

1 //compute.c
2 #include<stdio.h>
3 #include"m.h"
4 int main(){
5     int a=2,b=3;
6     printf("a+b=%d\n",add(a,b));
7     printf("a*b=%d\n",multi(a,b));
8     return 0;
9 }

  

 1 //m.h
 2 int add(int a,int b){
 3     int c;
 4     c = a+ b;
 5     return c;
 6 }
 7 
 8 int multi(int a, int b){
 9     int c=a*b;
10     return c;
11 }

  编写的Makefile文件如下:

 1 #makefile
 2 objects=compute.o
 3 CC=@gcc      #如果没有@符号,gcc的命令就会输出到终端
 4 CPP=@gcc -c  #如果有@符号,gcc的命令就不会输出到终端
 5 
 6 compute:$(objects)
 7     $(CC) -o compute $(objects)
 8 
 9 #标准写法
10 compute.o:compute.c m.h
11     $(CPP) compute.c
12 
13 
14 #简写形式;
15 #make自动推导 因为要生成.o文件,就需要相关联的compute.c文件,
16 #make会自动生成gcc -c compute.c的命令
17 #compute.o:m.h
18 
19 clean:            
20     @rm compute $(objects)

  接下来,执行make命令,就会生成compute.o文件与可执行文件compute.

$ ls -l
总用量 12
-rw-r--r-- 1 qi qi 133 5月  16 17:18 compute.c
-rw-r--r-- 1 qi qi 224 5月  17 14:38 Makefile
-rw-r--r-- 1 qi qi 105 5月  16 17:14 m.h
$ make 
$ ls -l
总用量 28
-rwxr-xr-x 1 qi qi 8480 5月  17 19:23 compute
-rw-r--r-- 1 qi qi  133 5月  16 17:18 compute.c
-rw-r--r-- 1 qi qi 1944 5月  17 19:23 compute.o
-rw-r--r-- 1 qi qi  224 5月  17 14:38 Makefile
-rw-r--r-- 1 qi qi  105 5月  16 17:14 m.h

 

  执行make clean会按照Makefile文件中的伪目标clean,对文件进行删除操作。

$ make clean 
$ ls -l
总用量 12
-rw-r--r-- 1 qi qi 133 5月  16 17:18 compute.c
-rw-r--r-- 1 qi qi 224 5月  17 14:38 Makefile
-rw-r--r-- 1 qi qi 105 5月  16 17:14 m.h

 

单文件夹下的C程序如何编写Makefile文件