怎么在Windows下使用Makefile文件

news2024/11/22 19:45:02

前言:如果熟悉在Linux开发的话,肯定知道Makefile文件的用处,它给我们带来很多的便利。在Linux系统下并不会像Windows那么多开发工具,在Windows下,只要在开发工具上点击一个按钮,就能将工程的所有源码进行编译运行。而在Linux下,工程源文件的编写往往是使用一个简单的编辑器(VIM),然后通过Makefile文件进行自动化编译。而我接下来想说的是,如何在Windows上如同Linux般使用Makefile文件进行编译。可能有人觉得没那个必要,因为Windows的开发工具数不胜数,随便一个都非常好用,不可否认,懂得利用开发工具开发是可大大提高开发效率。当然,接下我是从基础的知识出发,不仅仅是对Makefile文件的学习,从中还可帮你解开以往的一些疑惑,或者让你学习到一些新的有趣的知识。

1.搭建环境

1.gcc编译器下载,TDM-GCC,打开根据自己电脑的类型选择合适的程序,我的是win7/32bit,所以选择下载第一个:

2.下载完成后,以管理员方式打开安装程序,点击Create后:

3.选择相应的版本,点击Next,接下来会选择安装路径,自己随便选择一个不带中文的路径就行。

4.最后点击Install进行安装,安装完成后,可以在自己设置的安装路径下有这么一个文件夹“TDM-GCC-32”,接下来配置环境变量。打开控制面板 > 系统和安全 > 系统 >高级系统设置 > 环境变量:

添加系统变量,变量值是自己刚刚选择的安装路径,我安装在C盘,如下图:

找到变量Path,在后面加入 “;%GCC_PATH%\bin”,如图:

点击确定保存设置。

5.点击电脑桌面左下角,搜索cmd,以管理员身份打开cmd.exe,输入“gcc -v”:

得到如上输出可确认gcc编译器已正确安装,版本是5.1.0。

6.继续输入“mingw32-make -v”:

相对于Linux的make不同,这里是mingw32-make,在cmd里用cd命令切换在Makeflie文件所在目录,命令行输入mingw32-make回车运行,就行执行Makefile文件,进行自动化编译。

2.执行一个简单的Makefile文件:

1.将下面各个文件保存在同一目录下:

"src_a.c"
#include "stdio.h"
void funca()
{
	printf("funca runing!!!\r\n");
}
 
"src_b.c"
#include "stdio.h"
void funcb()
{
	printf("funcb runing!!!\r\n");
}
 
"src_c.c"
#include "stdio.h"
void funcc()
{
	printf("funcc runing!!!\r\n");
}
 
"main.c"
#include "stdio.h"
extern void funca();
extern void funcb();
extern void funcc();
int main()
{
	funca();
	funcb();
	funcc();
}
 
"Makefile"
mian : main.o  src_a.o src_b.o  src_c.o
	gcc main.o src_a.o src_b.o src_c.o -o main
 
main.o : main.c
	gcc main.c -c -o main.o
 
src_a.o : src_a.c
	gcc src_a.c -c -o src_a.o
 
src_b.o : src_b.c
	gcc src_b.c -c -o src_b.o
 
src_c.o : src_c.c
	gcc src_c.c -c -o src_c.o
 
 
.PHONY : clean
clean:
	del *.o main.exe -rf

Makefile可以暂时不用理解,这里只是一个简单通俗的例子。

所有文件创建完成如下:

2.打开cmd,切换到以上的目录,输入“mingw32-make”:

得到main.exe可执行文件,输入main.exe回车运行:

然后在资源管理器里查看Test目录会发现多了一些编译的过程文件(.o):

cmd输入命令“”mingw32-make clean”,将输出文件删除:

到此,我可以在Windows下利用CMD命令通过Makefile对源文件进行编译运行了。

环境搭建好了之后,再从学习gcc命令开始,才能逐步理解Makefile文件。

【推荐阅读】

virtio-net 实现机制【一】(图文并茂)

浅析linux内核网络协议栈--linux bridge

深度解析linux内核模块编译makefile

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51467.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

365天深度学习训练营-第P2周:彩色图片识别

目录 一、前言 二、我的环境 三、代码实现 1、数据下载以及可视化 2、CNN模型 3、训练结果可视化 4、随机图像预测 四、模型优化 1、CNN模型 2、VGG-16模型 3、Alexnet模型 4、Resnet模型 一、前言 >- **🍨 本文为[🔗365天深度学习训练营]…

2022年钒电池行业研究报告

第一章 行业概况 钒电池(Vanadium Redox Battery,缩写为VRB),全称为全钒氧化还原液流电池,是一种活性物质呈循环流动液态的氧化还原电池。钒电池可以作为大容量储能电站的电池,其工作原理如下:…

Unity 2021 请求 Android 12 读取本地文件权限

目标 工具: Unity 2021.2.14c1f1Android 12 系统手机 目标:实现Unity打出来的Apk包能请求读写android手机本地文件权限 原理 在Android系统中,操作手机中不安全的数据时,需要配置相应的权限,只有经过用户许可才能…

[附源码]JAVA毕业设计个人信息管理系统(系统+LW)

[附源码]JAVA毕业设计个人信息管理系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

深度学习-第三章概率与信息论

前言 概率论学科定义概率与信息论在人工智能领域的应用 3.1,为什么要使用概率论3.2,随机变量3.3,概率分布 3.3.1,离散型变量和概率质量函数3.3.2,连续型变量和概率密度分布函数 3.4,边缘概率3.5&#xff0c…

量子计算新突破!来源于150年前的思想实验

澳大利亚新南威尔士大学的研究表明,使用现代版本的“麦克斯韦妖”,可将量子比特重置为“0”态的错误减少了20倍。 Andrea Morello教授解释了麦克斯韦妖思想实验如何与他的团队通过仅选择冷电子进行量子计算的成就相类比。(图片来源&#xff1…

Go-Windows环境的快速搭建

下载 Downloads - The Go Programming Language 或者直接到指定版本下载可以根据个人喜好,下载zip或者执行版 下载后文件夹 查看版本 必须查看版本,通过go version命令进行查看最新版本1.19.3版本 配置的GoPath 已经自动配置进去 需要重新进入一个新的…

HBuilder X 导入git项目以及拉取和推送

1. 首先在 HB中 > 工具 > 插件安装 > Git插件 2. 安装好 Git 插件之后还要安装一个 tortoisegit (小乌龟) tortoisegit : 这里根据电脑下载对应的位数,需要转换成中文的可以下载中文包: 安装 tortoisegit : 1. 双击刚刚下载的msi文件进入安装 2. 连续两次next之后…

[附源码]计算机毕业设计JAVA校园环境保护监督系统

[附源码]计算机毕业设计JAVA校园环境保护监督系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

虚拟机NAL模式连接linux系统

windows虚拟机连外网,相当于设置双网卡,虚拟机编辑网关如下: 在window系统查看设置vmnet8 在linux系统配置ip静态网址 cd /etc/sysconfig/network-scripts/ vim ifcfg-ens33在linux上重启网卡。 在window上添加路由,先查询路由&a…

C语言经典题目之字符串逆序

目录 一、字符串逆序(基础题) 1.一个经典的错误,标准的零分 2.采用gets函数来修补漏洞 ​编辑 3.非要使用scanf怎么办? 4.使用指针来实现逆序函数 5.将函数修改为,只要传入两个地址,就能逆序这两个地址…

最新 | VDA-ISA5.0.4最新版本发布,汽车企业如何增强信息安全?

汽车行业拥有广泛而复杂的供应链,包括汽车整车制造商、不同层级的零部件厂商、供应商、服务商等众多企业。在这个链条上,其中任何一家企业的网络安全问题不论是数据泄密还是内外部攻击都有可能对整个供应链造成巨大影响。 比如2021年6月,某德…

Apifox很难不爱

一、背景 项目开发我们都知道在一个项目团队中是由很多角色组成,最常见团队的就是前端开发工程师、客户端开发工程师、服务端开发工程师组成一个团队,团队之间进行合作,一般我们都离不开API接口管理和测试,API接口管理可以理解为前…

推荐,文本转图像,图像转图像运营再也不用担心配图了

由 CompVis 领导的 Stable Diffusion V1 改变了开源人工智能模型的性质,并在全球范围内催生了数百个其他模型和创新。Stable Diffusion 如今也是所有软件中最快攀升至 Github 10K Stars 的软件之一,在不到两个月的时间里,它的 Stars 飙升至 3…

【内网安全】——windows信息收集

作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座…

Nginx安装

目录 1. 安装必要环境 1.1 需要安装gcc环境 1.2 PERE 1.3 zlib 1.4 openssl 2. 安装nginx 2.1 下载和解压 2.2 编译 2.2.1 设定配置 2.2.2 编译 2.2.3 安装 3. 启动nginx 4. 配置环境变量 5. 加入system管理 1. 下载Nginx 1. 安装必要环境 1.1 需要安装gcc环境 y…

基于PHP+MySQL学院信息发布系统的设计与实现

再添加完最新动态后可以点击最新动态管理,对已经添加过的最新动态进行编辑和删除,绑定的主要信息包括用文章标题,发布人,发布时间,文章类型,内容等信息 信息技术学院信息发布系统,是一个为学校提供信息的平台,是完全的,高速的,开放的,其核心思想是提供一个以自然语言为主的用户…

算法竞赛入门【码蹄集进阶塔335题】(MT2276-2280)

算法竞赛入门【码蹄集进阶塔335题】(MT2276-2280) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2276-2280)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2276 数的自我2. MT2277 分数个数3. MT2278 欧拉函数…

[附源码]Python计算机毕业设计Django房屋租赁系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Web3 来了,让我们展开双手拥抱它吧!

Web3的由来 在介绍Web3概念,有必要阐述下当下的网络世界。而如今的互联网正处于Web2阶段,其已经帮助数以亿计的人融入这个互联网大家庭,可在网络上构建可靠、稳定的基础设施。然而也正是Web2中心化网络成就了极少数互联网巨头,他…