网站建设评估,平台推广费用一般是多少,app设计思路,佛山建设外贸网站ANSI C标准下#xff0c;有两种程序环境。 
第1种是翻译环境#xff0c;在这个环境中源代码被转换为可执行的机器指令。 
翻译环境包括#xff1a;预处理#xff08;预编译#xff09;编译汇编链接。四个步骤。 第2种是执行/运行环境#xff0c;它用于实际执行代码。 链接…ANSI C标准下有两种程序环境。 
第1种是翻译环境在这个环境中源代码被转换为可执行的机器指令。 
翻译环境包括预处理预编译编译汇编链接。四个步骤。 第2种是执行/运行环境它用于实际执行代码。 链接库分为动态和静态链接库库Library其实是库文件库文件中是常用的函数或者类#include包含的是库函数二者不是完全相同的。 
链接库是将开源的库文件进行编译链接后得到的二进制文件不能独立运行必须等到其它程序调用才会被载入内存。这里不详细讲述库的知识。 
VS中编译器--cl.exe      链接器--link.exe 预处理只会处理#开头的语句编译阶段只校验语法链接时才会去找实体。 
预处理 
相当于根据预处理指令组装新的C/C程序。经过预处理会产生一个没有头文件都已经被展开了、宏定义都已经替换了没有条件编译指令该屏蔽的都屏蔽掉了没有特殊符号的输出文件没有注释这个文件的含义同原本的文件无异只是内容上有所不同。都是文本操作 
即非二进制指令。 
生成.i文件。 
编译 
将预处理完的文件逐一进行一系列词法分析、语法分析、语义分析及优化后产生相应的汇编代码文件。编译是针对单个文件编译的只校验本文件的语法是否有问题不负责寻找实体。 
符号汇总。 
生成.s文件。 
汇编 
把汇编指令变成二进制机器指令。 
形成符号表。符号对应地址。符号表为后续链接寻址做准备 
生成.o文件。elf格式一个文件形成几个不同的段使用readelf工具。    
链接 
通过链接器将一个个目标文件或许还会有库文件链接在一起生成一个完整的可执行程序。 链接程序的主要工作就是将有关的目标文件彼此相连接也就是将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。在此过程中会发现被调用的函数未被定义。需要注意的是链接阶段只会链接调用了的函数/全局变量如果存在一个不存在实体的声明函数声明、全局变量的外部声明但没有被调用依然是可以正常编译执行的。 
1、合并段表   2、符号表的合并和重定位。3、寻址通过符号表寻址 
对调用的进行寻址重定位只声明的可以正常编译执行 
链接寻址时若找不到某调用的函数则之后也找不到了就会发生错误。 
生成.exe文件。 声明外部没有的符号可以正常执行没有警告或报错。  
参考书籍《程序员的自我修养》 运行/执行环境 
1. 程序必须载入内存中。在有操作系统的环境中一般这个由操作系统完成。在独立的环境中程序 的载入必须由手工安排也可能是通过可执行代码置入只读内存来完成。 2. 程序的执行便开始。接着便调用main函数。 3. 开始执行程序代码。这个时候程序将使用一个运行时堆栈stack存储函数的局部变量和返回 地址。程序同时也可以使用静态static内存存储于静态内存中的变量在程序的整个执行过程 一直保留他们的值。 4. 终止程序。正常终止main函数也有可能是意外终止 
目录 
预处理 
编译 
汇编 
链接 运行/执行环境