✅作者简介:大家好,我是橘橙黄又青,一个想要与大家共同进步的男人😉😉
🍎个人主页:橘橙黄又青-优快云博客
今天学习:浅学编译和链接内部实现原理
前提:本文是在gcc编译环境下学习,目前只是浅学习
1. 翻译环境和运⾏环境
在ANSI C的任何⼀种实现中,存在两个不同的环境。
第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令。
第2种是执⾏环境,它⽤于实际执⾏代码。
如图:

2. 翻译环境
那翻译环境是怎么将源代码转换为可执⾏的机器指令的呢?这⾥我们就得展开开讲解⼀下翻译环境所 做的事情。
其实翻译环境是由编译和链接两个⼤的过程组成的,⽽编译⼜可以分解成:
预处理(有些书也叫预编 译)、编译、汇编三个过程。
如图:
.c文件生成可执行文件过程:
• 多个.c⽂件单独经过编译出编译处理⽣产对应的⽬标⽂件。• 注: 在Windows环境下的⽬标⽂件的后缀是 .obj ,Linux环境下⽬标⽂件的后缀是 .o• 多个⽬标⽂件和链接库⼀起经过链接器处理⽣成最终的可执⾏程序。• 链接库是指运⾏时库(它是⽀持程序运⾏的基本函数集合)或者第三⽅库。
如果再把编译器展开成3个过程,那就变成了下⾯的过程:
