千家信息网

GCC与编译过程

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,GCC与编译过程GCC(GNU Compiler Colletion),GUN编译器套装,是一套由GNU开发的编程语言编译器。Linux系统下的GCC编译器实际上是调用其他不同的工具来完成预处理、编译
千家信息网最后更新 2026年11月04日GCC与编译过程

GCC与编译过程

GCC(GNU Compiler Colletion),GUN编译器套装,是一套由GNU开发的编程语言编译器。Linux系统下的GCC编译器实际上是调用其他不同的工具来完成预处理、编译、汇编和链接工作。

一、编译过程

在计算机的眼里,只有1和0。不幸的是,我们用C语言写出来的代码,计算机无法直接看明白。所以一个程序如果需要被计算机执行,那么就必须翻译成能被计算机读懂并执行的1和0。实现这一结果的过程,我们称之为编译。

编译包括以下步骤:预处理、编译、汇编和链接。具体过程如下:

1.预处理:

hello.c文件中,预处理指令(入#include,#define,#ifdef,#endif等)经过预处理器解释,将预处理指令展开或者覆盖、将注释删除、添加必要的调试信息之后生成hello.i文件。

对应的命令为:gcc -E hello.c hello.i,表示我们只对其进行预处理阶段。

2.编译

经过预处理器处理之后生成的.i文件仍然是文本文件,计算机无法直接执行。在编译的阶段,编译器需要做词法分析、语法分析,然后根据硬件平台生成对应的汇编文件。不同的硬件平台有不同的编译器。例如x86平台的编译器与ARM交叉编译器生成的汇编文件就大不相同,这也正是C语言实现跨平台最关键的一个步骤:根据硬件平台来编译C代码。

对应的命令:gcc -S hello.i hello.s

3.汇编

编译过后的.s文件,需要继续加工生成.o文件。gcc调用汇编器as将汇编源程序翻译为可重定位文件。可重定位文件指的是文件虽然是一个ELF的可执行指令流,但全局符号还没有定位。由于全局符号可以出现在不同的文件中,因此在编译的过程中需要确定其入口地址,因此,需要进行最后一个步骤,链接。

对应的命令:gcc -c hello.s hello.o

4.链接

经过汇编之后的文件,不能够直接运行,需要通过链接来将全局符号重定位以及合并相同的段。通常情况下,我们需要用它其他库中的函数,链接器就负责扎到我们需要的函数并将其链接进来。一个ELF文件中,会包含需要段,如.text,.data等以及一些自定义的段,链接器会根据链接脚本(如果有的话)将对应的段放在一起。经过以上四个步骤,一个程序就可以被运行了。

对应的命令:gcc -L

编译 文件 链接 预处理 编译器 过程 计算机 生成 不同 命令 平台 步骤 定位 全局 指令 硬件 符号 语言 相同 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 小米移动互联网科技园 哈尔滨大商圈互联网科技有限公司 广州大一互联网络科技有限公司 有马互联网科技 杭州互联网科技公司 互联网科技媒体 世界互联网领先科技成果 互联网科技上市公司 万达互联网科技 深圳艾佳互联网科技 成都狮子座互联网科技 科技伦理 互联网公司 互联网科技公司招聘 互联网科技产品 贵州叶脉互联网科技有限公司所属行业 互联网经济与金融科技 本届互联网博览会上的黑科技 烟台灵鸽互联网科技有限公司 广东工业互联网大赛深圳学泰科技 济南小医互联网科技有限公司招聘 百单网互联网科技有限公司 广州紫鲸互联网科技有限公司 云信互联网科技有限公司 互联网科技小贷 极限挑战互联网科技 互联网女皇 腾讯科技 融势互联网科技 成都玖崟互联网科技有限公司乐商圈怎么样 辽宁互联网新科技 燊美集互联网科技有限公司
0