0
点赞
收藏
分享

微信扫一扫

C语言程序编译链接

@TOC

序言

这个模块是C语言的的基础部分,放在现在说是害怕之前听不太懂,今天我们就仔细的看看一个文件是如何变成一个可执行程序的

程序编译

一个代码要变成可执行程序要经过以下若干步骤,我先列出来,在Linux的环境下给大家演示,有些命令看不太懂没有关系,就看文件的变化就可以了

  1. 预处理

  2. 编译

  3. 汇编

  4. 链接

代码准备

image-20220303192233788

#include <stdio.h>    

#define M 10    

int main()    
{    
  printf("%d\n",M);                                                          
  return 0;    
} 

image-20220303192654091

预处理(预编译)

gcc -E test.c -o test.i     

image-20220303192744271

这里是将#include<stdio.h>等库展开,将宏定义替换好

作用

  • 展开库
  • 替换宏

我们打开test.i看看

image-20220303192817098

看看,代码一下子变成了800多行,这是库函数的展开,并且我们看到宏M已经被替换成了10,此时仍旧是C语言代码

编译

gcc -S test.i -o test.s

image-20220303192844879

作用

  • 将C语言编译成汇编代码

image-20220303192935928

汇编

gcc -c test.s -o test.o

image-20220303192959944

作用

  • 将汇编语言变成二进制

image-20220303193258808

链接

这里我没办法具体演示,就说一下吧,我们在代码中使用了printf函数,这里链接的便是printf函数,存在printf.o中

拓展

要是有兴趣学习Linux中多文件编译,可以看看这个博客

Linux下多文件编译运行

举报

相关推荐

0 条评论