程序的执行过程
2017-04-12 21:00
99 查看
编译:进行语法检查、函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件。
连接:把程序中各个文件编译生成的目标文件连接起来,同时还要同系统提供的资源(如函数库)连接成为一个整体,得到可执行文件。
运行:执行连接好的程序。
重定位:把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程,也就是说在装入时对目标程序中指令和数据的修改过程。
实现链接的方式有三种(链接时间不同): 1.静态链接 2.动态链接(装入时) 3.动态链接(运行时)
1 静态链接库的优点
(1) 代码装载速度快,执行速度略比动态链接库快;
(2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。
不足:(1) 使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;
2 动态链接库的优点
(1) 更加节省内存并减少页面交换;
(2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;
(3) 不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;
(4)适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。
连接:把程序中各个文件编译生成的目标文件连接起来,同时还要同系统提供的资源(如函数库)连接成为一个整体,得到可执行文件。
运行:执行连接好的程序。
重定位:把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程,也就是说在装入时对目标程序中指令和数据的修改过程。
实现链接的方式有三种(链接时间不同): 1.静态链接 2.动态链接(装入时) 3.动态链接(运行时)
1 静态链接库的优点
(1) 代码装载速度快,执行速度略比动态链接库快;
(2) 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问题,可避免DLL地狱等问题。
不足:(1) 使用静态链接生成的可执行文件体积较大,包含相同的公共代码,造成浪费;
2 动态链接库的优点
(1) 更加节省内存并减少页面交换;
(2) DLL文件与EXE文件独立,只要输出接口不变(即名称、参数、返回值类型和调用约定不变),更换DLL文件不会对EXE文件造成任何影响,因而极大地提高了可维护性和可扩展性;
(3) 不同编程语言编写的程序只要按照函数调用约定就可以调用同一个DLL函数;
(4)适用于大规模的软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。
相关文章推荐
- PLC执行程序的过程及特点
- Linux操作系统中/sbin/init程序的执行过程
- Linux操作系统中/sbin/init程序的执行过程
- VC++中的MFC程序的执行过程
- 程序执行过程
- WEB程序的执行过程!
- Linux操作系统中/sbin/init程序的执行过程
- 《.NET框架程序设计》读书笔记一--.NET程序的生成以及执行过程
- C程序编译执行过程
- 程序的执行过程
- VC++中的MFC程序的执行过程
- C程序到可执行程序的转换过程
- python程序的执行过程
- 程序执行过程的跟踪:(用debug来跟踪一个程序的运行过程) 整理总结
- 一个简单的“HELLO WORLD”程序在操作系统中执行的过程
- C#程序调用Delphi可执行EXE文件过程
- 【编程基础】程序的执行过程
- 在VC++程序中显示存储过程的执行进度
- wxWidgets程序一般执行过程
- 程序执行过程