• 单文件夹下的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
    ",add(a,b));
    7     printf("a*b=%d
    ",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
  • 相关阅读:
    函数式编程
    高级特性
    ZooKeeper介绍
    perl 退出函数问题
    perl 处理 回车 换行符
    定义函数
    调用函数
    python 字典
    python 条件判断
    列表和数组
  • 原文地址:https://www.cnblogs.com/zhuandshao/p/6869213.html
Copyright © 2020-2023  润新知