news 2026/6/15 22:16:42

gcc c编译器如何编译c程序,如何为pic单片机选择c编译器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
gcc c编译器如何编译c程序,如何为pic单片机选择c编译器

对于c编译器,大家应早已熟悉。往期文章中,小编带来诸多c编译器相关文章,尤其是gcc c编译器。本文中,小编将对gcc c编译器如何编译c程序予以介绍,并在文章的后半部分向大家讲解如果选择pic单片机的c编译器。如果你对本文即将要涉及的内容存在一定兴趣,不妨继续往下阅读哦。

一、GCC如何编译C语言程序

使用GCC将C语言源代码文件生成可执行文件的过程,需要经历四个的步骤:

预处理(Preprocessing)

编译(Compilation)

汇编(Assembly)

链接(Linking)

1、预处理(Preprocessing)

将C源程序预处理,生成.i文件。

预处理过程实质上是处理“#”,将#include包含的头文件直接拷贝到.c当中;将#define定义的宏进行替换;将#if #else #endif定义的无用代码过滤掉,同时将代码中没用的注释部分删除等。

预处理所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。

2、编译(Compilation)

预处理后的.i文件编译为汇编语言,生成.s文件。

编译所要作的工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。

3、汇编(Assembly)

将.s文件经过汇编,生成.o目标文件。

汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。对于被翻译系统处理的每一个C语言源程序,都将最终经过这一处理而得到相应的目标文件。目标文件中所存放的也就是与源程序等效的目标的机器语言代码。

目标文件由段组成。通常一个目标文件中至少有两个段:

代码段:该段中所包含的主要是程序的指令。该段一般是可读和可执行的,但一般却不可写。

数据段:主要存放程序中要用到的各种全局变量或静态的数据。一般数据段都是可读,可写,可执行的。

4、链接(Linking)

将.o文件链接起来生成一个可执行文件。

链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。

根据库函数不同的链接方式,链接处理可分为静态链接和动态链接两种。使用静态链接的好处是,依赖的动态链接库较少,具有较好的兼容性;缺点是生成的程序比较大。使用动态链接的好处是,生成的程序比较小,占用较少的内存。

C语言中静态库和动态库简介

需要注意的是,.i文件、.s文件、.o文件可以认为是中间文件或临时文件,若使用 GCC 一次性完成C语言程序的编译,那么只能看到最终的可执行文件,这些中间文件都是看不到的,因为 GCC 已经将它们删除了。

二、如何选择PIC单片机的C编译器

如果是编译PIC10、PIC12、PIC16系列单片机,用CCS最好。而PIC18/PIC24/dsPIC/PIC32系列,用MCC最好。

PIC单片机的C编译器只有HI-TECH公司出品PICC编译器,和CCS公司的CCS编译器。还有PIC的生产商Microchip公司自行生产的只针对PIC18/PIC24/dsPIC/PIC32系列单片机的C语言编译器MCC(MCC18 / MCC30 / MCC32)。

IAR软件不能编译PIC的C语言或汇编语言。

要注意的一点是,CCS虽然也是C语言,但因为头文件不同,所以它的程序和PICC,MCC都不一样,三者的程序不能混着编译,比如针对CCS编写的程序只能用CCS的编译器编译,用PICC编译只能报错。

另外,HI-TECH已经被MICROCHIP收购,成为MICROCHIP旗下的全资子公司。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 10:43:49

毕业设计项目 深度学习行人口罩佩戴检测

简介 2020新冠爆发以来,疫情牵动着全国人民的心,一线医护工作者在最前线抗击疫情的同时,我们也可以看到很多科技行业和人工智能领域的从业者,也在贡献着他们的力量。近些天来,旷视、商汤、海康、百度都多家科技公司研…

作者头像 李华
网站建设 2026/6/15 10:43:41

商业授权注意事项:大规模使用需提前联系获取许可

商业授权注意事项:大规模使用需提前联系获取许可 在企业数字化转型加速的今天,AI生成内容(AIGC)正以前所未有的速度渗透进营销、培训、客服等核心业务场景。尤其是数字人视频——这种能“开口说话”的虚拟形象,已经成…

作者头像 李华
网站建设 2026/6/15 14:17:33

【C#交错数组遍历终极指南】:掌握高效遍历技巧,提升代码性能

第一章:C#交错数组遍历概述在C#中,交错数组(Jagged Array)是指数组的数组,每一维度的长度可以不同。这种结构适用于不规则数据集合的存储与处理,例如学生成绩表中每位学生选修课程数量不一致的情况。由于其…

作者头像 李华
网站建设 2026/6/15 11:43:33

C#实现稳定TCP通信的10个关键步骤(数据丢包与粘包解决方案)

第一章:C#中TCP通信的核心机制与挑战在C#开发中,TCP通信是实现网络数据传输的重要手段,依赖于.NET框架提供的System.Net.Sockets命名空间。通过TcpClient和TcpListener类,开发者能够快速构建客户端-服务器通信模型。然而&#xff…

作者头像 李华
网站建设 2026/6/15 11:43:10

【C#跨平台拦截器实战指南】:5个核心示例助你掌握高效AOP编程

第一章:C#跨平台拦截器概述在现代软件开发中,跨平台能力已成为衡量语言与框架成熟度的重要标准。C# 依托 .NET 平台的持续演进,已实现对 Windows、Linux 和 macOS 的深度支持,使得开发者能够在不同操作系统上构建统一行为的应用程…

作者头像 李华
网站建设 2026/6/15 11:50:38

FLV直播回放可用:HeyGem拓展应用场景至流媒体领域

HeyGem 拓展应用场景至流媒体领域:FLV 支持与批量处理的工程实践 在直播内容爆炸式增长的今天,一场带货直播结束之后,回放视频往往沉寂于平台角落,等待被少数用户偶然点开。而品牌方却希望这段高价值内容能反复触达更多人群——但…

作者头像 李华