简单编写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. Reverse the Rivers 题解

    原题链接https://codeforces.com/problemset/problem/2036/E (暂时不会弄翻译,所以不上原题了) 说一下我对题意的理解吧 有n个国家,每个国家有k个区域,用 ...

  2. 【第2章】matlab程序设计基础

    matlab语言的常量与变量 matlab语言的变量命名规则 由一个字母引导,后面可以为其他字符. 区分大小写 如Abc ≠ ABc matlab的保留常量 以下为系统保留常量,自己定义的变量不能与他 ...

  3. Visual Studio C++ 汇编 混合编程

    Visual Studio C++ 汇编 混合编程 实验要求 请用汇编语言编写实现GCD递推公式的子程序,对入口和出口参数形式不做要求,但需要用 C 语言函数来获取输入.调用汇编递推子程序,并且用 C ...

  4. 【金TECH频道】企业架构转型组合拳来袭,助力金融机构一臂之力

    当前,数字化转型已经成为时代共性课题在政策和技术的双重指引下金融机构逐渐走向差异化竞争的格局面对转型阵痛以契合.明晰的战略规划及企业架构调整来辅助业务变革成为助力企业数字化转型的有效路径金融机构也纷纷 ...

  5. 【Python】conda基本使用、pip换源、pip超时问题解决

    conda问题 重要警告:安装conda的时候,安装目录不要包含空格以及特殊字符,最好不要直接装在C盘根目录, 往期笔记 conda安装: https://www.cnblogs.com/mllt/p ...

  6. 【Linux】【虚拟机】 IP地址的动态与静态设置

    目录 配置文件的修改 配置文件的修改 vim /etc/sysconfig/network-scripts/ifcfg-ens33 IP配置方式(不指定:none,静态:static,动态:dhcp) ...

  7. git同步远程仓库的所有分支

    git clone克隆远程仓库默认是只克隆master分支,当想把远程仓库上的所有的分支都克隆下来的话,有以下几种方法. 使用远程仓库github上的LSMLIB仓库为例.该仓库在github上一共有 ...

  8. Qt/C++原创推流工具/支持多种流媒体服务/ZLMediaKit/srs/mediamtx等

    一.前言 1.1 功能特点 支持各种本地视频文件和网络视频文件. 支持各种网络视频流,网络摄像头,协议包括rtsp.rtmp.http. 支持将本地摄像头设备推流,可指定分辨率和帧率等. 支持将本地桌 ...

  9. Qt控件SDK使用示例大全

    文章 链接 01表盘控件-01汽车仪表盘-gaugecar https://qtchina.blog.csdn.net/article/details/120240257 01表盘控件-02圆弧仪表盘 ...

  10. Qt开源作品35-秘钥生成器

    一.前言 在很多商业软件中,需要提供一些可以试运行的版本,这样就需要配套密钥机制来控制,纵观大部分的试用版软件,基本上采用以下几种机制来控制. 远程联网激活,每次启动都联网查看使用时间等,这种方法最完 ...