exe文件如何编写?
2个回答
2015-08-10
展开全部
一个程序从生成到运行起来,这中间是非常复杂的一个过程,光是编译链接生成可执行程序就够研究一辈子。
这个问题里的信息量太大,需要好几本书才能回答。只针对的题目给简单的说说一个.exe是怎么生成的。
程序需要依靠源文件来编译,编译之后生成中间代码(.obj)文件,之后依靠链接器将所有的.obj文件以及依靠的.lib文件链接起来生成一个.exe的文件。
这是最简单的理解,现在稍微展开点说说.exe文件。
在Windows中,所有的可执行文件(.exe, .dll, .ocx, .sys等等)都是按照一定文件内容格式来组织——PE格式。PE格式记录了一个程序文件加载运行过程中的信息,例如文件类型,是一个dll还是一个exe;运行的平台,32位系统还是64位系统等等。当一个程序运行的时候,程序的加载器会根据PE格式的内容将程序文件中的数据段,代码段等等映射到内存中,并正确的导入程序要使用的系统API,同时要将文件中的一些偏移地址修正为映射入内存之后的地址,之后调用程序代码的入口点来执行。就是这样一个过程涉及到了系统的内存管理,进程管理,线程调度等等一系列问题。
而这些PE格式的内容就是链接器在链接程序的时候填入的,换句话说就是链接器生成了一个PE文件用于执行。
每个操作系统都会有自己所支持的可执行文件格式。PE格式是Windows平台独有的。
这个问题里的信息量太大,需要好几本书才能回答。只针对的题目给简单的说说一个.exe是怎么生成的。
程序需要依靠源文件来编译,编译之后生成中间代码(.obj)文件,之后依靠链接器将所有的.obj文件以及依靠的.lib文件链接起来生成一个.exe的文件。
这是最简单的理解,现在稍微展开点说说.exe文件。
在Windows中,所有的可执行文件(.exe, .dll, .ocx, .sys等等)都是按照一定文件内容格式来组织——PE格式。PE格式记录了一个程序文件加载运行过程中的信息,例如文件类型,是一个dll还是一个exe;运行的平台,32位系统还是64位系统等等。当一个程序运行的时候,程序的加载器会根据PE格式的内容将程序文件中的数据段,代码段等等映射到内存中,并正确的导入程序要使用的系统API,同时要将文件中的一些偏移地址修正为映射入内存之后的地址,之后调用程序代码的入口点来执行。就是这样一个过程涉及到了系统的内存管理,进程管理,线程调度等等一系列问题。
而这些PE格式的内容就是链接器在链接程序的时候填入的,换句话说就是链接器生成了一个PE文件用于执行。
每个操作系统都会有自己所支持的可执行文件格式。PE格式是Windows平台独有的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询