zoukankan      html  css  js  c++  java
  • 源文件如何转换到可执行文件

    从源文件到可执行文件

     

    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

     

     

     

     

  • 相关阅读:
    XML(学习笔记)
    css样式学习笔记
    Request(对象)
    sql一些错误修改的总结
    转载(如何学习C#)
    sql server(学习笔记2 W3Cschool)
    sql sqrver(学习笔记1 W3Cschool)
    关于 flutter开发碰到的各种问题,有的已经解决有的一直没解决或者用其他方法替代
    关于 Flutter IOS build It appears that your application still contains the default signing identifier.
    关于 flutter本地化问题 The getter 'pasteButtonLabel' was called on null
  • 原文地址:https://www.cnblogs.com/lifehrx/p/7533298.html
Copyright © 2011-2022 走看看