码迷,mamicode.com
首页 > 其他好文 > 详细

源文件如何转换到可执行文件

时间:2017-09-17 00:36:20      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:alt   翻译   png   window   blog   配置信息   需要   存储位置   inux   

从源文件到可执行文件

 

1计算机只能运行本地代码(机器语言)由cpu进行解析

源代码(构成源文件.c / .java -------(翻译)--------- 本地代码

 技术分享

 

 

2)本地代码:例如Windows 下的.exe文件的内容---------Dump-----------216进制的数

 技术分享

技术分享

 

3)高级语言------------(编译器)---------------- 机器语言

编译器,编程语言,cpu 的类型的不同翻译出机器语言而不同

 

编译器也是一种程序本身也要运行环境

(如有LInux下的c 编译器, windows 下的编译器)

 技术分享

 

4hello.c ---------(编译)--------- hello.obj ------(链接)------hello.exe

   (源文件) ------------------------(目标文件)虽然内容是本地代码,但程序处于未完状态所以不能运行,要把多个目标文件结合如调用头文件的函数,生成1EXE文件程序是完整的了。.        

 

5)库文件:把多个目标文件集成保存到一个目标文件的形式。(.lib

 

  链接器指定了库文件,从中抽取出所需要的目标文件,然后和其它目标文件

结合生成EXE文件。

之所以使用库文件,为了简化链接器的参数指定多个文件这个过程(也就是编译),还能保护源码。

 

6)API : Windows 以函数的形式为应用提供了各种功能,这些形式的函数称为API

Application Programming Interface 

DLL(Dynamic Link Library ) :储存API的目标文件。

 技术分享

 

7).exe 文件作为单独文件储存在硬盘中,但它并没有指定变量和函数实际存储位置,

.exe 文件给变量和函数分配的的虚拟地址,在程序运行时虚拟地址会转换成实际地址。

连接器会在exe文件开头追加转换地址所需要的重要信息(这个信息称为再配置信息),

再配置信息成为了变量和函数的相对地址。

 技术分享

8.exe 文件加载到内存后才可以运行。并在内存中分配堆栈两个组,此时程序由4部分构成。

 技术分享

9

 技术分享

技术分享

 

 

 

 

 

 

源文件如何转换到可执行文件

标签:alt   翻译   png   window   blog   配置信息   需要   存储位置   inux   

原文地址:http://www.cnblogs.com/lifehrx/p/7533298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!