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

    文章

    1669

    浏览量

    51078
  • 汇编器
    +关注

    关注

    0

    文章

    31

    浏览量

    11582
  • Test
    +关注

    关注

    0

    文章

    80

    浏览量

    27688
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    边缘设备AI部署:编译器如何实现轻量化与高性能?

    电子发烧友网综合报道 AI编译器是专门为人工智能(AI)和机器学习(ML)模型设计的编译器,其核心目标是高级的AI模型描述(如计算图、神经网络结构)转换为特定硬件平台(如CPU、GPU、FPGA
    的头像 发表于 07-06 05:49 6105次阅读

    兆松科技ZCC编译器全面支持芯来科技NA系列处理器

    近日,兆松科技(武汉)有限公司(以下简称“兆松科技”)宣布正式发布高性能RISC-V编译器ZCC 4.0.0版本。
    的头像 发表于 06-11 09:56 1226次阅读

    FPGA Verilog HDL语法之编译预处理

    的语句)。Verilog HDL编译系统通常先对这些特殊的命令进行“预处理”,然后预处理的结果和源程序一起在进行通常的
    的头像 发表于 03-27 13:30 1086次阅读
    FPGA Verilog HDL语法之<b class='flag-5'>编译</b><b class='flag-5'>预处理</b>

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

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

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

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

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

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

    Triton编译器在高性能计算中的应用

    高性能计算(High-Performance Computing,HPC)是现代科学研究和工程计算中不可或缺的一部分。随着计算需求的不断增长,对计算资源的要求也越来越高。Triton编译器作为一种
    的头像 发表于 12-25 09:11 1559次阅读

    Triton编译器的优化技巧

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

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

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

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

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

    Triton编译器的常见问题解决方案

    Triton编译器作为一款专注于深度学习的高性能GPU编程工具,在使用过程中可能会遇到一些常见问题。以下是一些常见问题的解决方案: 一、安装与依赖问题 检查Python版本 Triton编译器通常
    的头像 发表于 12-24 18:04 6385次阅读

    Triton编译器支持的编程语言

    Triton编译器支持的编程语言主要包括以下几种: 一、主要编程语言 Python :Triton编译器通过Python接口提供了对Triton语言和编译器的访问,使得用户可以在Python环境中
    的头像 发表于 12-24 17:33 1452次阅读

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

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

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

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

    分享关于编译器的科普

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