栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

预处理入门篇-程序执行过程:预处理-编译-汇编-链接做了什么操作?

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

预处理入门篇-程序执行过程:预处理-编译-汇编-链接做了什么操作?

文章目录

前言程序运行过程

最后

前言

本篇博客是深入预处理的前导篇,主要是介绍 程序 的执行过程,主要使用 Linux 平台演示,具体为 CentOS7,以 C程序为例,通过对 程序执行过程的讲解,会穿插 预处理符的基本使用过程,以及 各个处理命令的基本使用。

程序运行过程

程序的翻译运行过程:本质上就是把文本式的代码翻译成二进制代码的过程。

因为计算机在执行时,只认识二进制,所以编写的 高级语言代码,需要 编译器 将其 编译 成 二进制代码,这个过程分为以下四个阶段:

下面使用 test.c 进行演示处理过程

#include 
#define N 10
int main()
{
    printf("n hello worldn");
    printf("test1n");
    printf("test2n");
    printf("N=%dn",N);
    return 0;
}

预处理
将代码进行预先处理,包含四个最主要操作,在Linux下编译就可以看到效果:gcc -E test.c -o test.i

头文件展开去注释宏替换条件编译 编译
将预处理后的C语言编译成汇编语言,也使用可以根据 .c 文件(自动先预处理,然后编译) 或是 .i 文件进行编译处理,生成 .s 文件,命令:gcc -S test.i -o test.s
汇编
处理汇编文件,将上面得到的 汇编文件 进行 汇编处理,生成 可重定向的二进制文件,即 .o 文件并不是可执行文件,而是 可链接文件(无法直接执行),gcc -c test.s -o test.o
Linux od命令用于输出文件内容。od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来。链接
链接主要的库文件,将自身程序和库文件进行关联(关联分为静态链接和动态链接),因为在代码编写时调用了很多 标准库函数,使用库文件可以很好的提高效率,而且代码 健壮性 也更好。直接使用 gcc test.o -o test就可以生成一个名为 test的可执行文件了,如果不适用 -o test 来指定名字,就默认生成 a.out 可执行文件

可以使用 ldd test 来查看该可执行程序 依赖的库

所以一般在使用的时候,gcc test.c就会直接上面四步,生成默认可执行文件 a.out,如果直接使用 gcc test.c -o test 就生成一个名为 test 的可执行文件。

上面的四个步骤的记忆重点是使用的参数,要记忆就记得 ESc 就可以了

最后

感谢观赏,一起提高,慢慢变强

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

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

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