Windows 下使用 Mingw32-make 来执行 Makefile示例[通俗易懂]

文章目录先下载Mingw设置好环境变量确认安装环境状态gccmingw32-makeC工程测试main.cmath.ccall_math.c准备好Makefile文件执行Makefile执行前执行后运行main.exe执行Makefileclean清理文件执行前执行后整体运行演示GIFReferernces先下载Mingw这里使用的是mingw32不是64的,需要64位的自行搜索下载32位的可以参考我之前一篇的:C-BookNote-Win开发环境设置

大家好,又见面了,我是你们的朋友全栈君。


先下载 Mingw

这里使用的是 mingw32 不是 64 的,需要 64位 的自行搜索下载

32位 的可以参考我之前一篇的:C – Book Note – Win 开发环境设置


设置好环境变量

如下图设置,我是安装在:C:\MinGW 下的
在这里插入图片描述


确认安装环境状态


gcc

在 cmd 或是 ps(power shell) 中输入:gcc -v,出现下面类似的输出,就OK了,如果不行,就要确认一下环境变量是否设置好了 Mingw 的 bin 目录
在这里插入图片描述


mingw32-make

同样看看 mingw32-make 能否正常执行,输出类似一下信息就 OK 了
在这里插入图片描述

但是名字太长,还有个”-“号,不方便输入

我们将 mingw32-make.exe 复制出一份,并且改名为:make.exe,这样后续命令行中 make 就方便多了
在这里插入图片描述
再次测试一下:make,可以看到一样的输出信息
在这里插入图片描述


C 工程测试

准备好一下几个源码文件


main.c

// author : jave.lin
// file : main.c
#include <stdio.h>
extern void call_math();
int main() { 
   
    call_math();
    return 0;
}

math.c

#ifndef _MATH__C_
#define _MATH__C_
// author : jave.lin
// file : math.c
int add(int a, int b) { 
   
    return a + b;
}
int sub(int a, int b) { 
   
    return a - b;
}
int mul(int a, int b) { 
   
    return a * b;
}
int div(int a, int b) { 
   
    return a / b;
}
#endif

call_math.c

#ifndef _CALL_MATH__C_
#define _CALL_MATH__C_
// author : jave.lin
// file : call_math.c
#include <stdio.h>
extern int add(int, int);
extern int sub(int, int);
extern int mul(int, int);
extern int div(int, int);
void call_math() { 
   
    int a = 8, b = 2;
    printf("a = %d, b = %d\n", a, b);
    printf("add(a:%d, b:%d) = %d\n", a, b, add(a, b));
    printf("sub(a:%d, b:%d) = %d\n", a, b, sub(a, b));
    printf("mul(a:%d, b:%d) = %d\n", a, b, mul(a, b));
    printf("div(a:%d, b:%d) = %d\n", a, b, div(a, b));
}
#endif

准备好 Makefile 文件

# author : jave.lin
# file : Makefile
main : main.o math.o call_math.o
	gcc main.o math.o call_math.o -o main

main.o : main.c
	gcc main.c -c -o main.o

math.o : math.c
	gcc math.c -c -o math.o

call_math.o : call_math.c
	gcc call_math.c -c -o call_math.o


.PHONY : clean
clean:
	del *.o main.exe -rf

执行 Makefile

将 shell 当前目录定位在我们的 Makefile 所在目录下(方便一个 make 就搞定,这样就不用输入其他的目录信息)


执行前

在这里插入图片描述


执行后

在这里插入图片描述


运行 main.exe

在这里插入图片描述


执行 Makefile clean 清理文件


执行前

在这里插入图片描述


执行后

在这里插入图片描述


整体运行演示 GIF

在这里插入图片描述


Referernces

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126583.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • python信号处理库_python开源协议

    python信号处理库_python开源协议本发明涉及的是一种在用电采集终端上实现标准MBUS协议接口用来采集水表、热量表、气表数据的方法,具体涉及一种基于MBUS标准协议接口模块采集水、热、气表的方法,属于用电信息采集领域。背景技术:我国正处于自动化楼宇建设事业蓬勃发展的时期,远程抄表系统作为其中重要的一环,正朝着自动化及智能化方向发展;MBUS(仪表总线)总线作为一种通讯方式,以其高性价比,在水热测量仪表中得到了广泛的应用,大大推动了远…

    2022年10月15日
  • ListView addHeaderView和addFooterView使用上的一些问题

    ListView addHeaderView和addFooterView使用上的一些问题

    2021年8月23日
  • android短信验证码方案,Android之短信验证码

    android短信验证码方案,Android之短信验证码今天所使用的方案只是android手机设备集成短信验证码功能的方案之一。我们所采用的方案是使用聚合数据的短信验证sdk。接口文档:https://www.juhe.cn/docs/api/…程序的界面如下所示:实现步骤:1.到聚合数据官网上申请短信验证SDK数据,生成AppKey,如下图所示:2.配置工程,把相关的sdk库导入到Project中去,:3.配置AndroidManifest.xm…

    2022年7月25日
  • MySQL修改数据表名

    MySQL修改数据表名修改数据表,包括:修改表名、修改字段名、修改字段的数据类型等。MySQL中,修改数据表的操作都是使用ALTERTABLE修改表名ALTERTABLE旧表名RENAME[TO]新表名;说明其中,TO是可选的,有没有都可以。首先,查看数据库中所有的表修改表名检查是否修改成功

    2022年5月31日
  • 寄存器与锁存器的区别

    寄存器与锁存器的区别

    2022年3月13日
  • 异步fifo深度计算_异步fifo verilog

    异步fifo深度计算_异步fifo verilog文章目录一、异步FIFO介绍1.1.空满判断1.2.跨时钟域问题1.3.格雷码转换1.4.格雷码计数器二、代码code一、异步FIFO介绍  FIFO有同步和异步两种,同步即读写时钟相同,同步FIFO用的少,可以作为数据缓存;异步即读写时钟不相同,异步FIFO可以解决跨时钟域的问题,在应用时需根据实际情况考虑好fifo深度即可。  与同步FIFO相同,异步FIFO也主要由五大模块组成,不同…

    2022年8月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号