这篇文章主要介绍“C语言程序环境编译的方法”,在日常操作中,相信很多人在C语言程序环境编译的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言程序环境编译的方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一、程序的翻译环境(编译和链接)
在ANSI C 的任何一种实现中,存在两个不同的环境:
如下图:就是我们编译器编译一个源文件到一个可执行文件的大致过程

组成一个程序的每个源文件(test.c)通过编译过程分别转换成目标代码(test.obj)
每个目标文件又由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。
链接器同时会引入标准c函数库中任何被该程序所用到的函数。
对于一个源文件(test.c)变成最终的二进制文件(test.exe)可以通过下图简单表示:


看上图我们知道:编译又分三步:
预编译 (预处理)(test.c —>test.i)
编译 (test.i —>test.s)
汇编 (test.s —>test.o)
编译完后执行链接,链接会做哪些事呢?
合并段表
符号表的合并和符号表的重定位
最后形成(test.exe)
二、程序的运行环境
程序必须载入内存,在有操作系统的环境中:一般这个由操作系统来完成。在独立的环境中,程序的载入必须由手工安排,也可能是通过可执行代码置入只读内存来完成。
程序的执行便开始,接着调用main函数。
开始执行程序代码,这个时候程序将使用一个运行时堆栈,存储函数的局部变量和返回地址,程序同时也使用静态(static)内存,存储与静态内存中的变量在程序的整个执行过程一直保留他们的值。
终止程序。正常终止main函数,也可能是意外终止(代码出错)
到此,关于“C语言程序环境编译的方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注天达云网站,小编会继续努力为大家带来更多实用的文章!