单文件夹下的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

 

转载于:https://www.cnblogs.com/zhuandshao/p/6869213.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值