简单编写Makefile与使用make工具

在不使用make工具下对c文件的编译

gcc main.c -o out

gcc 《目标文件》 -o 《生成执行文件》

编译到执行文件的流程:预处理,编译,汇编,链接

  • 预处理:编译器对头文件或宏定义展开,或者条件编译的选择,处理得到 mian.c->main.i
  • 编译:将文件编译成汇编代码,mian.i->main.s
  • 汇编:将汇编文件编译成机器码,mian.s->main.o
  • 链接:直接将目标文件编译成可执行文件,./mian.o

编译main.c文件-->out.exe

生成out.exe可执行文件

执行out.exe

./out.exe

成功执行main编译结果

PS:

在window下生成的可执行文件为后缀.exe文件

windows:

mingw32-make

Linux:

make

工具路径:"D:\MinGW\bin\mingw32-make.exe"

**使用mingw32-make命令将会执行make工具,所以将mingw32-make.exe文件复制重命名为make.exe,就可以在window下通过make命令来使用make工具,也可以通过mingw32-make专业使用make工具。

window下make工具mingw32-make.exe

复制,重命名为make.exe,这样就能同时使用make命令和mingw32-make命令

在linux下生成的可执行文件为后缀.out文件

过程截图

它定义了一个名为hello的目标,这个目标依赖于main.c和message.c文件。当main.c和message.c文件发生变化时,gcc命令会被执行,生成一个名为hello的可执行文件。

linux删除文件命令rm -f:

window删除文件命令del hello.exe

构建

Make:

定义了三个目标:hello、main.o和message.o。每个目标都有一个依赖文件和一个命令。

  • hello目标依赖于main.o和message.o文件。当main.o和message.o文件发生变化时,gcc命令会被执行,生成一个名为hello的可执行文件。
  • main.o目标依赖于main.c文件。当main.c文件发生变化时,gcc命令会被执行,生成一个名为main.o的目标文件。
  • message.o目标依赖于message.c文件。当message.c文件发生变化时,gcc命令会被执行,生成一个名为message.o的目标文件。

伪目标:clean: 原:make clean 新: mingw32-make clean

删除构建中间文件

常用的内置变量

  • $@:表示目标文件。
  • $^:表示所有的依赖文件。
  • $<:表示第一个依赖文件。

Cmake构建

需要gcc,g++工具链

简单编写Makefile与使用make工具的更多相关文章

  1. 简单编写Makefile

    相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云.在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide.其实makefile并没有 ...

  2. 简单编写makefile文件,实现GCC4.9编译项目,增加boost库測试等等。。

    一.须要用到的hw.cpp hw.h funtest.cpp funtest.h makefile 几个測试文件 1.hw.cpp代码例如以下: #include "hw.h" # ...

  3. 一个简单的Makefile的编写【用自己的话,解释清楚这些】

    用自己的话,解释清楚这些~ Makefile是程序员编写出来指导编译器编译程序源码为目标文件(可执行文件,或链接库) 这里只写一个简单的Makefile 作为例子 其需求如下: frank@ubunt ...

  4. 一个简单的makefile文件编写

    下午闲来无聊,就打开很久没动过的linux系统想熟悉熟悉在linux上面编译代码,结果一个makefile文件搞到晚上才搞定,哈哈! 先把代码简单贴上来,就写了一个冒泡排序: sort.h: #ifn ...

  5. Makefile简单编写实例

    介绍一下Makefile的简单编写例子. 编写Makefile的规则就是: 目标文件:依赖文件 (tab)编译规则 现在我有一个文件目录结构为: 解释一下这几个文件.首先我创建makefile目录,底 ...

  6. 如何编写Makefile,一份由浅入深的Makefile全攻略

    本文转载整理自陈浩大大的文章(跟我一起写 Makefile),由于原文内容庞大,故梳理出目录结构以便于学习及查阅参考. 一.概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这 ...

  7. Linux下编写 makefile 详细教程

    原文地址: https://www.cnblogs.com/mfryf/p/3305778.html 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到make ...

  8. 为Go项目编写Makefile

    为Go项目编写Makefile 借助Makefile我们在编译过程中不再需要每次手动输入编译的命令和编译的参数,可以极大简化项目编译过程. make介绍 make是一个构建自动化工具,会在当前目录下寻 ...

  9. 如何自己编写Makefile

    如何自己编写Makefile   相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云.在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用 ...

  10. GNU Make 学习系列一:怎样写一个简单的Makefile

    编程通常遵循一个相当简单的程序:编辑源文件,编译源代码成可执行的格式,调试结果.尽管将源代码翻译成可执行程序是常规的过程,如果做的不正确,程序员可能会浪费大量的时间去追踪问题.大多数的开发者都经历过这 ...

随机推荐

  1. 鸿蒙UI开发快速入门 —— part05:组件的样式复用

    1. 为什么要样式复用? 如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,样式的复用就很有必要了. 为此,鸿蒙推出了可 ...

  2. redis设置密码和开启远程访问

    改密码 默认redis安装后,密码是默认的,通过查看安装目录的config文件,可以查到:requirepass 这个设置,默认是啥就是啥. 需要修改密码的话,把这个注释拿掉,将requirepass ...

  3. Shadow DOM 及 Custom Elements

    今天发现 shadow DOM 和 自定义元素,这两个东西和 molecule 简直是同出而异名. 我得好好推敲一下,如果 shadow dom 确实能达到目的且新款浏览器都支持,molecule 就 ...

  4. Hive数据库【操作】+ 【分区】+【分桶】+【查询】+【运算】+【函数】

    目录 键值对信息 数据库表操作 内部表操作 外部表操作 分区表的操作 分桶表操作 数据查询 关系运算 数学运算 逻辑运算 数值计算 日期函数 键值对信息 添加数据库的描述信息(添加键值对信息) cre ...

  5. 转载 Netty tls验证

    https://blog.csdn.net/luo15242208310/article/details/108215019 目录Java ssl单向TLSServer端Client端双向TLSser ...

  6. Qt编写的项目作品31-PDF阅读器(雨田哥作品)

    一.功能特点 仿WPS界面. 预览PDF文件. 支持PDF预览放大.缩小. 支持目录预览查看. 支持目录点击跳转页查看. 支持页数指定跳转. 支持上一页.下一页.首页.尾页跳转. 支持鼠标拖拽滑动预览 ...

  7. 循规蹈矩--从零开始建设k8s监控(一)

    前言 监控k8s集群,目前主流就是使用prometheus以及其周围的生态,本文开始介绍怎么一步步完成k8s监控的建设 环境准备 组件 版本 操作系统 Ubuntu 22.04.4 LTS minik ...

  8. 《jQueryEasyUI从零开始学》-施尧2018一书的配套源代码和学习资源

    <jQueryEasyUI从零开始学>-施尧2018一书的配套源代码和学习资源:下载地址 提取码:uuly

  9. 有关主席树的一些 trick

    主席树做题记录. 主席树,即可持久化权值线段树. P3248 [HNOI2016] 树 难爆了这题.题目中会多次把模板树的某个子树放到大树上的某个节点下,我们把这一整个子树看作一个大节点,把模板树.大 ...

  10. PyScript 使用(1)

    今天按照官方文档进行pyscript的调用,发现paths下总是出现问题,于是调试了一下,问题解决了: # data.py import numpy as np def make_x_and_y(n) ...