码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 程序编译过程(扫盲贴)


    一、目的

            很多小伙伴都是从IDE开始编程学习,记得那个时候我们用的还是VC++ IDE,不知道现在大学里面教学是否已经更新;一个代码从开始编写要最终的执行要经历多个过程,每个过程都会产生一些中间文件;下面就简单介绍一下各个过程,加深大家的理解。

    二、介绍

            

           上图就是源代码foo.c变成foo.out经历的整个过程,分别为预处理、编译、汇编、链接。

            假设我们有这样一段代码:

    1. #include
    2. int main(int argc, char **argv) {
    3. printf("hello world\n");
    4. return 0;
    5. }

    预处理

            我们的代码中有时候需要通过`#include`预处理指令包含其他头文件或者通过`#define`命令定义一些宏,这些预处理指令是在编译之前被处理的(经过预处理器处理);

            上面的代码中我们只有一个`#include`指令用来包含`stdio.h`这个头文件(因为我们需要通过printf进行一些打印)。    

    gcc -E foo.c -o foo.i

            通过`-E`选项我们指示GCC进行预处理操作,`-o`选项用于指明输出文件名 ,我们可以打开foo.i这个文件查看里面的内容(内容较多不再贴出)

    编译

            将经过预处理后代码转换成汇编代码的过程。

    gcc -S foo.i -o foo.s

    汇编

            将汇编代码转换成机器码,这一步骤会生成目标文件

    gcc -c foo.s -o foo.o

    链接  

             链接器将目标文件与其他目标文件(动态库、静态库)等链接起来生成可执行文件。

     gcc foo.o -o foo.out

    上面我们将编译的整个过程进行了分解,如果只是简单的进行编译只需要一行命令:

    gcc foo.c -o foo.out

    以上就是本篇所有内容,关于GCC的详细用法以及各个选项的含义后续有时间再分享。

  • 相关阅读:
    关于this
    【计算机网络】网络基础知识
    区块链技术与应用 - 学习笔记2【密码学基础】
    如何将Docker镜像源更改为阿里云的镜像加速地址
    【UnityShaderLab实现“Billboard“始终面向相机_播放序列图的效果_案例分享(内附源码)】
    《Solidity 简易速速上手小册》第1章:Solidity 和智能合约简介(2024 最新版)
    100行代码教你写个卡牌翻翻乐小游戏
    Java 数据结构篇-实现单链表核心API
    多平台推广时 如何找到你的高价值广告投放平台?
    电脑蓝屏的问题与解决方法
  • 原文地址:https://blog.csdn.net/tianizimark/article/details/126158728
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号