首页 > 编程语言 >C语言编程-GCC编译过程

C语言编程-GCC编译过程

时间:2024-08-18 22:06:31浏览次数:14  
标签:汇编 GCC 编程 gcc helloworld C语言 编译 指令 替换

gcc编译

预处理 ->编译->汇编->链接

预处理

gcc -E helloworld.c -o helloworld.i
  • 头文件展开;不检查语法错误,即可以展开任意文件;
  • 宏定义替换;将宏名替换为宏值;
  • 替换注释;将注释替换为空行;
  • 展开条件编译;根据条件来展开指令;

编译

gcc -S helloworld.i -o helloworld.s
  • 逐行检查语法错误;是整个编译4个步骤中最耗时的;
  • 将c程序翻译成汇编指令;

汇编

gcc -c helloworld.s -o helloworld.o
  • 翻译:将汇编指令翻译成对应的二进制编码

链接

gcc  helloworld.o -o helloworld.exe
  • 数据段合并;
  • 数据地址回填;
  • 库引入

标签:汇编,GCC,编程,gcc,helloworld,C语言,编译,指令,替换
From: https://www.cnblogs.com/ffff5/p/18366182

相关文章

  • 并发编程基础
    并发编程基础什么是线程进程是操作系统中的一个实体,是操作系统资源分配的基本单位,在Java中,一个进程必然至少有一个线程,这个线程被称为主线程。进程下的多个线程共享进程的资源。操作系统分配CPU资源是以进程下的线程为基本单位而分配的,因为线程才是主要执行任务的。undefined......
  • Ubuntu 中GCC交叉编译工具链安装
    ​Ubuntu自带的gcc编译器是针对X86架构的,如果要编译的是ARM架构的代码,就需要一个在X86架构的PC上运行,可以编译ARM架构代码的GCC编译器,这个编译器就叫做交叉编译器,总结一下交叉编译器就是:1、它肯定是一个GCC编译器。2、这个GCC编译器是运行在X86架......
  • 专题:C语言操作符详解
    ⽬录1.操作符的分类2.⼆进制和进制转换3.原码、反码、补码4.移位操作符5.位操作符:&、|、^、~6.单⽬操作符7.逗号表达式8.下标访问[]、函数调⽤()9.结构成员访问操作符10.操作符的属性:优先级、结合性11.表达式求值1.操作符的分类•算术操作符:+、-......
  • Java毕设源码-基于ssm框架的少儿编程网上报名系统+vue+毕业论文+mysql数据库
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、管理员功能模块2、用户功能模块3、前台首页功能模块四、毕设内容和源代码获取总结逃逸的卡路里博主介绍:✌️码农一枚|毕设布道师,专注于......
  • C语言目录操作(2024.8.12)
    用递归删除目录(多个目录可以从参数传进来)#include<stdio.h>#include<sys/types.h>#include<dirent.h>#include<unistd.h>#include<string.h>#include<stdlib.h>/*从目录中读到的所谓目录项,是一个这样的结构体:structdirent{ ino_td_ino;//文件索引号 of......
  • C语言 之 strlen、strcpy、strcat、strcmp字符串函数的使用和模拟实现
    文章目录strlen的使用和模拟实现函数的原型strlen模拟实现:方法1方法2方法3strcpy的使用和模拟实现函数的原型strcpy的模拟实现:strcat的使用和模拟实现函数的原型strcat的模拟实现:strcmp的使用和模拟实现函数的原型strcmp的模拟实现本章的内容主要讲解这4个与字符......
  • C语言工程实践实现完整的五子棋项目一
    五子棋第一章玩家信息部分五子棋五子棋第一章前言一、所需技术二、玩家信息部分实现1.头文件部分2.菜单部分3.玩家信息部分总结每文推荐前言接下来的几篇文章我将带领大家实现一个工程实践的项目–五子棋。它是一个比较完整的项目,主要包括了三个部分:1.玩家信......
  • 【C语言篇】数组和函数的实践:扫雷游戏(附源码)
    文章目录前言扫雷游戏的分析和设计扫雷游戏的功能说明游戏的分析和设计文件结构设计扫雷游戏的代码实现初始化棋盘打印棋盘布置雷排查雷扫雷游戏的拓展前言源码在最后扫雷游戏的分析和设计经典扫雷游戏扫雷游戏的功能说明使⽤控制台实现经典的扫雷游戏游戏可......
  • C安全编程教学-声明和初始化-声明具有正确存储持续期的对象(三)
    注:本课程参考文献《C安全编码标准》 欢迎关注我......
  • 【C语言】内存函数
    memcpy使用和模拟实现void*memcpy(void*destination,constvoid*source,size_tnum);介绍:•函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。•这个函数在遇到‘\0’的时候并不会停下来。•如果source和destinati......