0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用编译器将预处理文件的编译的命令是什么?

GReq_mcu168 来源:玩转单片机 作者:玩转单片机 2020-06-24 11:49 次阅读

前言

如果你使用的是集成开发环境,那么你点击编译按钮就可生成可执行文件,然后点击运行即可运行。那么,你知道从源代码到可执行文件经历了哪些过程吗。仅仅是编译?

下面以windows环境下的test.c为例,test.c里的代码为:

#include 《stdio.h》 int main(void) { printf(“This is a test program! ”); return 0; }

其经历如下过程:

使用编译器将预处理文件的编译的命令是什么?

如图,编译生成可执行文件的过程实际包含四个过程:(1)预处理;(2)编译;(3)汇编;(4)链接。

预处理(Preprpcessing)

使用预处理器把源文件test.c经过预处理生成test.i文件,预处理用于将所有的#include头文件以及宏定义替换成其真正的内容。

预处理的命令为:

gcc -E test.c -o test.i

上述命令中-E是让编译器在预处理之后就退出,不进行后续编译过程;-o是指定输出文件名。

预处理之后得到的仍然是文本文件。test.i文件部分内容截图如下:

使用编译器将预处理文件的编译的命令是什么?

编译(Compilation)

使用编译器将预处理文件test.i编译成汇编文件test.s。

编译的命令为:

gcc -S test.i -o test.s

上述命令中-S让编译器在编译之后停止,不进行后续过程;-o是指定输出文件名。汇编文件test.s是文本文件,部分内容截图如下:

使用编译器将预处理文件的编译的命令是什么?

汇编(Assemble)

使用汇编器将汇编文件test.s转换成目标文件test.o。

汇编过程的命令为:

gcc -c test.s -o test.o

上述命令中-c、-o让汇编器把汇编文件test.s转换成目标文件test.o。目标文件test.o是二进制文件,部分内容截图如下:

使用编译器将预处理文件的编译的命令是什么?

链接(Linking)

链接过程使用链接器将该目标文件与其他目标文件、库文件、启动文件等链接起来生成可执行文件。

链接过程的命令为:

gcc test.o -o test.exe

综上,生成可执行程序过程为:预处理、编译、汇编、链接。各个命令如下图所示:

使用编译器将预处理文件的编译的命令是什么?

责任编辑:pj

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编译器
    +关注

    关注

    1

    文章

    1642

    浏览量

    49268
  • 汇编器
    +关注

    关注

    0

    文章

    31

    浏览量

    11265
  • Test
    +关注

    关注

    0

    文章

    80

    浏览量

    26987
收藏 人收藏

    相关推荐

    什么样的代码会被编译器优化

    现在的编译器有多智能,可能你辛辛苦苦写的代码,在编译器看来就是几句废话,直接被删除掉。
    的头像 发表于 01-16 16:38 177次阅读

    Triton编译器与GPU编程的结合应用

    Triton编译器简介 Triton编译器是一种针对并行计算优化的编译器,它能够自动高级语言代码转换为针对特定硬件优化的低级代码。Triton编译
    的头像 发表于 12-25 09:13 316次阅读

    Triton编译器如何提升编程效率

    在现代软件开发中,编译器扮演着至关重要的角色。它们不仅高级语言代码转换为机器可执行的代码,还通过各种优化技术提升程序的性能。Triton 编译器作为一种先进的编译器,通过多种方式提升
    的头像 发表于 12-25 09:12 328次阅读

    Triton编译器的优化技巧

    (Instruction Selection) Triton 编译器在指令选择阶段采用了先进的算法来生成针对特定硬件架构优化的指令。这一阶段的目标是高级中间表示(IR)转换为低级机器代码,同时尽可能地利用硬件
    的头像 发表于 12-25 09:09 334次阅读

    Triton编译器的优势与劣势分析

    Triton编译器作为一种新兴的深度学习编译器,具有一系列显著的优势,同时也存在一些潜在的劣势。以下是对Triton编译器优势与劣势的分析: 优势 高效性能优化 : Triton编译器
    的头像 发表于 12-25 09:07 369次阅读

    Triton编译器在机器学习中的应用

    1. Triton编译器概述 Triton编译器是NVIDIA Triton推理服务平台的一部分,它负责深度学习模型转换为优化的格式,以便在NVIDIA GPU上高效运行。Triton编译器
    的头像 发表于 12-24 18:13 513次阅读

    Triton编译器与其他编译器的比较

    Triton编译器与其他编译器的比较主要体现在以下几个方面: 一、定位与目标 Triton编译器 : 定位:专注于深度学习中最核心、最耗时的张量运算的优化。 目标:提供一个高度抽象、灵活、高效
    的头像 发表于 12-24 17:25 475次阅读

    Triton编译器功能介绍 Triton编译器使用教程

    。以下是 Triton 编译器的一些功能介绍和使用教程。 Triton 编译器功能介绍 多语言支持 :Triton 支持多种编程语言,使得开发者可以在同一个编译器框架下处理不同的语言。
    的头像 发表于 12-24 17:23 621次阅读

    分享关于编译器的科普

      Clang和GCC的主要区别如下所示: Clang比GCC编译用的时间更短,包括预处理、语法分析、解析、语义分析、抽象语法树生成的时间。 Clang比GCC的内存占用更小。 Clang生成的中间
    的头像 发表于 12-09 09:49 170次阅读

    嵌入式学习-常用编辑之GCC编译器

    、GCC编译过程GCC编译器编译过程要经过预处理编译,汇编,链接等4步才能够生成可执行文件
    发表于 08-27 10:17

    常用编辑之GCC编译器

    hello.c -o hello.i我们使用vim hello.i命令可以看到预处理文件有将近800行,预处理过程一个不到10行的代码,
    发表于 08-24 11:05

    AI编译器技术剖析

    随着人工智能技术的飞速发展,AI编译器作为一种新兴的编译技术逐渐进入人们的视野。AI编译器不仅具备传统编译器的功能,如高级语言编写的源代码
    的头像 发表于 07-17 18:28 1745次阅读

    人工智能编译器与传统编译器的区别

    人工智能编译器(AI编译器)与传统编译器在多个方面存在显著的差异。这些差异主要体现在设计目标、功能特性、优化策略、适用范围以及技术复杂性等方面。以下是对两者区别的详细探讨,旨在全面解析其内在差异。
    的头像 发表于 07-17 18:19 2098次阅读

    Meta发布基于Code Llama的LLM编译器

    近日,科技巨头Meta在其X平台上正式宣布推出了一款革命性的LLM编译器,这一模型家族基于Meta Code Llama构建,并融合了先进的代码优化和编译器功能。LLM编译器的推出,标志着Meta在人工智能领域的又一重大突破,将
    的头像 发表于 06-29 17:54 1560次阅读

    C预处理器及其工作原理

    C预处理器(C Pre-Processor)也常简写为 CPP,是一个与 C 编译器独立的小程序,预编译器并不理解 C 语言语法,它仅是在程序源文件
    的头像 发表于 03-12 14:14 711次阅读
    C<b class='flag-5'>预处理器</b>及其工作原理