Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深入讲解GCC和Make的区别(有涉及makefile文件哟!!!)

深入讲解GCC和Make的区别(有涉及makefile文件哟!!!)

作者头像
bear_fish
发布于 2018-09-19 06:00:25
发布于 2018-09-19 06:00:25
13.1K02
代码可运行
举报
运行总次数:2
代码可运行

gcc是编译器 而make不是 make是依赖于Makefile来编译多个源文件的工具 在Makefile里同样是用gcc(或者别的编译器)来编译程序.

gcc是编译一个文件,make是编译多个源文件的工程文件的工具。 make是一个命令工具,是一个解释makefile中指令的命令工具。

make就是一个gcc/g++的调度器,通过读入一个文件(默认文件名为Makefile或者makefile),执行一组以gcc/g++为主的shell命令序列。输入文件主要用来记录文件之间的依赖关系和命令执行顺序。

gcc是编译工具; make是定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译; 也就是说make是调用gcc的。

要是好好分析过一个makefile文件就不会这么问了。

刚接触linux编程,很多概论都比较模糊,今天突然用到makefile文件,想到了make与gcc的关系。于是查阅了一些资料,在此做一个小结:

1.gcc是编译一个文件,make是编译多个源文件的工程文件的工具。

2.make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。

3.make就是按照makefile脚本对整个项目的各个文件进行分别编译和链接,makefile基本上就是"目标"(target),"关连"(dependencies)   和"动作"三者所组成的脚本。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。make除了可以做到编译和连结,也可以把如何产生文档(如manual  page,   info档及   dvi 档)   ,以及打包压缩都完成。

4.make 可以说是一个批处理程序,它可以自动编译多个文件。当然写好的脚本是前提。MAKE是运用GCC去编译文件的。

5.Makefile文件作为一种描述文档一般需要包含以下内容:

◆ 宏定义

◆ 源文件之间的相互依赖关系

◆ 可执行的命令

Makefile中允许使用简单的宏指代源文件及其相关编译信息,在Linux中也称宏为变量。在引用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用时就必须加圆括号()。

下面都是有效的宏引用:

$(CFLAGS)

$Z

$(Z)

其中最后两个引用是完全一致的。

个人总结:

gcc就是一个纯编译器

而make更牛逼些 包括了gcc  

只有把makefile解决 一切ok

以上部分来源于网络,如果你对gcc和make理解要求不深的话上面的话基本可以打发你了,本人在Linux上小玩了两把gcc和make对这两个命令感觉深有体会,具体如下:

gcc就是我们熟悉的C语言编译程序,这个主要是GNU项目下产生的一个开源程序,说白了,就是告诉系统,你下面要对C的文件干嘛了,主要有两种:编译、链接。例:gcc -c hello.c 、gcc -o hello hello.o,但是我们基本一次搞定:gcc hello.c

make其实也是个程序,但是这个程序和gcc不是一个意思,他主要的工作是引导,也就是说,这个程序干什么,你是可以“要求的”,牛逼吧,所以就有了makefile这个文件,因为当你make的时候,他得首先找到makefile这个文件,才知道他要干嘛!!!而巧的是makefile这个文件里面基本写的都是gcc的命令,所以当你使用make的时候就会发现怎么和gcc最后的结果是一样的呀!!而我们一般使用make的时候,往往很多人不是自己写的makefile这个文件,导致很多人对gcc和make稀里糊涂的,以下我贴出自己写的一个makefile文件以供参考:

main: main.o haha.o sin_value.o cos_value.o

             gcc -o main main.o haha.o sin_value.o cos_value.o

clean:

             rm -f main *.o

#gcc和rm前面是‘tab’

#这个makefile文件是有两个作用的一个是建立一个是删除文件分别命令是:make main和make rm,当然如果你使用make那系统默认是make #main这个了~~~~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年11月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
『51单片机』串口通信配置
🚩write in front🚩    🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~作者周榜89﹣作者总榜832~ 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠ 📝个人主页-謓泽的博客_CSDN博客 📃 📣系列专栏-【51单片机】系列_謓泽的博客-CSDN博客🎓 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩 💬本系列哔哩哔哩江科大51单片机的视频为主以及博主
謓泽
2023/02/22
7950
『51单片机』串口通信配置
4.3 51单片机-串口通信
对于单片机来说,通信则与传感器、存储芯片、外围控制芯片等技术紧密结合,成为整个单片机系统的“神经中枢”;没有通信,单片机所实现的功能仅仅局限于单片机本身,就无法通过其它设备获得有用信息,也无法将自己产生的信息告诉其它设备。如果单片机通信没处理好的话,它和外围器件的合作程度就受到限制,最终整个系统也无法完成强大的功能,由此可见单片机通信技术的重要性。
DS小龙哥
2022/01/12
1.3K0
4.3 51单片机-串口通信
51单片机采用中断进行串口通信
所谓中断方式,就是串口收/发标志位出发中断后,在中断中执行既定操作,可通过函数调用来实现。
緣來
2020/01/02
2.1K0
C51 单片机开发单片机发数据给 PC
串口发送数据给电脑,那么按照约定会设置串口相关的参数,比较重要的就是波特率。设置波特率并不是单片机一方进行设置,而是单片机和电脑都要进行设置。
码农UP2U
2024/07/04
3850
C51 单片机开发单片机发数据给 PC
用51单片机+11.0592的晶振,如何产生115200的波特率
原文地址http://homezzy.blog.hexun.com/29601793_d.html 以前自己也遇到过这种情况,模块115200波特率而且不能更改,如何用51产生115200波特率,最近朋友也可能遇到这个问题,,特转载一下原文博客大神的文章 今天解决了一个小问题(查书后才得到确切结论。。。)用51单片机+11.0592的晶振,如何产生115200的波特率? 本来感觉这个小意思,直接初始化定时器1,程序如下: void init_com( void ) { SCON = 0x50 ; //
杨奉武
2018/04/18
1.3K0
单片机通信之串口通信
单片机常用的通信方式有串口通信,I2C,SPI,UART等等,在这里说一下基于8051单片机串口通信的基本原理。简要介绍单片机与PC机之间的通信。
飞哥
2020/07/10
2.1K0
单片机通信之串口通信
串口通信详解
原理 计算机串行通信基础 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。 通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。 串行通信的基本概念 异步通信 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。
跋扈洋
2021/02/02
2.5K0
串口通信详解
利用单片机串口实现甲乙两机的数据传输
题目:利用单片机串口实现甲乙两机的数据传输。 要求: ①甲机连续发送0-F,共记16个字符,并显示再数码管上; ②乙机接受甲机内容并用数码管显示后回传; ③甲机接收到乙机回传内容后与当前内容相比较,若一致则发送下一个; ④晶振为11.0592Mhz,数据通讯波特率为2400。 1、虚拟电路图 [在这里插入图片描述] 2、实现的效果 [在这里插入图片描述] 3、相关代码 ①发送机部分 #include<reg51.h> #define uchar unsigned char char code map[]={
远方的星
2021/08/02
5790
利用单片机串口实现甲乙两机的数据传输
蓝桥杯单片机必备知识—–(12)串口通讯
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100133.html原文链接:
全栈程序员站长
2021/04/15
9190
51单片机学习 串行口通信实验
(1)查询方式: 发送程序:发送一个数据-----查询TI-------发送下一个数据(先发后查) 接收程序:查询RI--------读入一个数据---------查询RI-----(先查后收)
叶庭云
2021/12/01
2K0
51单片机学习   串行口通信实验
基于51设计的宠物防丢系统(蓝牙+Android上位机)
手机APP: 采用QT设计,程序支持跨平台编译运行(Android、IOS、Windows、Linux都可以编译运行,对应平台上QT的环境搭建,之前博客已经发了文章讲解)
DS小龙哥
2022/01/21
1.1K0
基于51设计的宠物防丢系统(蓝牙+Android上位机)
STC51单片机中断与定时器配置参考
*外中断INT0--------void intsvr0(void) interrupt 0 using 1
小锋学长生活大爆炸
2020/08/13
1.5K0
STC51单片机中断与定时器配置参考
『51单片机』串口通信
🚩write in front🚩   🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家博主 & 星级博主~掘金⇿InfoQ创作者~周榜137﹣总榜1040⇿全网访问量30w+🏅 🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠  📝个人主页-謓泽的博客_CSDN博客 📃 🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​ 📣系列专栏-【51单片机】系列_謓泽的博客-CSD
謓泽
2022/12/12
1.9K0
『51单片机』串口通信
51单片机+SIM800C(GSM模块)实现短信发送功能
本项目利用51单片机和SIM800C GSM模块实现短信发送功能。短信作为一种广泛应用的通信方式,在许多领域具有重要的作用,如物联网、安防系统、远程监控等。通过将51单片机与SIM800C GSM模块相结合,可以实现在各种应用场景下的短信通信功能。
DS小龙哥
2023/11/08
1.4K0
51单片机+SIM800C(GSM模块)实现短信发送功能
C#上位机串口控制12864显示
实现的效果 上面是用Proteus仿真的,,对了如果自己想用proteus仿真需要安装下面这个软件 再看一下实物显示效果 先做上位机部分........... 为了程序一启动就把电脑上能用的串口号显示
杨奉武
2018/04/17
4.6K0
C#上位机串口控制12864显示
单片机多字节串口接收(转)
 工作了一年多,写了不少单片机串口程序。感觉串口多字节接收部分的逻辑相对于配置寄存器跟串口回复来说,是有点难度的——寄存器配置基本上都是死的,串口回复多字节跟回复一字节只是多了一个循环。
用户6754675
2020/02/26
2K0
电赛校赛-三相逆变电源设计(单片机部分–C52仿真测频+串口发送机与串口接收机)
承接前文的模拟部分,这次开始写下单片机部分的仿真程序设计,本文介绍C52单片机的设置,后面将会介绍MSP430F249的具体配置。
全栈程序员站长
2022/06/28
6530
电赛校赛-三相逆变电源设计(单片机部分–C52仿真测频+串口发送机与串口接收机)
51单片机波特率计算工具介绍
51 芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。
电子工程师成长日记
2022/07/21
8580
51单片机波特率计算工具介绍
极客手工:自制51四驱无线遥控小车
遥控小车大家应该都玩过,网上也有各种DIY小车的制作详解。我做的这个遥控小车和其他的作品大同小异,但作为单片机设计,这次我把单片机按键发送程序、无线模块使用、电机驱动作为本教程的核心内容。 小车参数: 控制键5个:前进、后退、左转、右转、停止; 有效距离200米。 硬件组装 准备工作: 材料:直流电机4个,L293D电机驱动模块、蓄电池一块,车身底盘一个。 说明:车身底盘大家根据自己的购买力自行购买,蓄电池也是。至于L293D模块,淘宝上卖的比较贵,不过我用的就是成品模块,效果非常好,钱不多的同学可以自
企鹅号小编
2018/01/24
2.8K0
极客手工:自制51四驱无线遥控小车
物联网-串口通信和ADC转换实验
USART是一个高度灵活的串行通讯设备。主要特点为:全双工操作 (独立的串行接收和发送寄存器)、异步或同步操作、主机或从机提供时钟的同步操作、高精度的波特率发生器、支持 5, 6, 7, 8,或 9个数据位和 1个或 2个停止位、硬件支持的奇偶校验操作、数据过速检测、帧错误检测、噪声滤波,包括错误的起始位检测,以及数字低通滤波器、三个独立的中断:发送结束中断、发送数据寄存器空中断,以及接收结束中断、多处理器通讯模式、倍速异步通讯模式。
会洗碗的CV工程师
2024/01/30
4260
物联网-串口通信和ADC转换实验
推荐阅读
相关推荐
『51单片机』串口通信配置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验