在ubuntu系统下用Makefile方式编程主程序

Makefile 介绍

make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。

首先,我们用一个示例来说明Makefile的书写规则。以便给大家一个感兴认识。这个示例来源于GNU的make使用手册,在这个示例中,我们的工程有8个C文件,和3个头文件,我们要写一个Makefile来告诉make命令如何编译和链接这几个文件。我们的规则是:

1.如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2.如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3.如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。

只要我们的Makefile写得够好,所有的这一切,我们只用一个make命令就可以完成,make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。

Makefile的规则

在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。
target… : prerequisites …
command


-------------------------------------------------------------------------------
target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
prerequisites就是,要生成那个target所需要的文件或是目标。
command也就是make需要执行的命令。(任意的Shell命令)

编写main1.c,sub1.h,sun1.c

1.创建函数

先把函数赋值注释掉

#include "sub1.h"

    int main(void){
    int a;
    int b;
    //a=2;
    //b=5;


    printf("%.2f\n",x2x(a,b));
    return 0;
}

在这里插入图片描述

创建makefile文件

我这里使用的是vi makefile

main1:sub1.o main1.o
         gcc main1.c sub1.o -o main1    
 sub1.o:sub1.c
        gcc -c   sub1.c -o sub1.o

clean:
        rm *.o

在这里插入图片描述

输入make命令进行调用并执行

这里输出的是-nan,值得注意的是在写makefile文件的时候最好用vim而不是vi,使用vi就算手动编写,在使用make命令的时候也会报错例如:makefile:2: *** missing separator (did you mean TAB instead of 8 spaces?). Stop.

在这里插入图片描述
改掉注释再次运行make指令就有结果了
在这里插入图片描述

参考文章:
1.Ubuntu16.04下C语言的编译及makefile的应用
2.Makefile教程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值