栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C程序编译

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C程序编译

C程序编译
      • 第一个源文件
      • 编译作用
      • 编译过程
        • 预处理
          • 终端命令
          • 作用
        • 编译
          • 终端命令
          • 作用
        • 汇编
          • 终端命令
          • 作用
        • 链接
          • 终端命令
          • 作用
        • 总命令

第一个源文件

hello.c

#include
int main(void)
{
    printf("Hello world");
}
编译作用

计算机并不能直接执行上面的源文件,需要通过编译器进行编译,转化为二进制可执行文件之后,计算机才能读懂程序并执行。

编译过程

总共四步:

  • 预处理(preprocessing)
  • 编译(compiling)
  • 汇编(assembling)
  • 链接(linking)
预处理 终端命令

gcc -E xxx.c -o xxx.i

-E,-o以及下面的-S、-c是都命令行参数,能够改变gcc命令的功能。而-o代表output,后面跟着所要生成输出的文件的文件名

作用
  • 头文件展开。 — 不检查语法错误。 可以展开任意文件。
  • 宏定义替换。 — 将宏名替换为宏值。
  • 替换注释。 — 变成空行
  • 展开条件编译 — 根据条件来展开指令。

预处理之后的hello.i:

编译 终端命令

gcc -S xxx.i -o xxx.s

作用
  • 逐行检查语法错误。— 整个编译4步骤中最耗时的过程。

  • 将C程序翻译成 汇编指令,得到.s 汇编文件。

编译后的hello.s:

汇编 终端命令

gcc -c xxx.s -o xxx.o

作用
  • 将汇编指令翻译成对应的二进制编码。
链接 终端命令

Windows gcc xxx.o -o xxx.exe

Linux gcc xxx.o -o xxx

作用
  • 数据段合并
  • 数据地址回填
  • 库引入
  • 生成可执行文件
总命令

Windows:gcc xxx.c -o xxx.exe

Linux:

make xxx

gcc xxx.c -o xxx

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836262.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号