程序的编译链接可分为四个步骤,分别为预处理,编译,汇编,链接。
    预处理:主要是处理源代码中‘#’开始的预编译指令,生成*.i文件
    编译:将预处理完的文件进行词法、语法、语义等分析,从而产生相应的汇编代码*.s文件。
    汇编:将汇编代码文件翻译成机器可以执行的目标文件。
    链接:将汇编生成的目标文件集合相连接,生成最终可执行文件。
   
    静态链接:在形成可执行文件前实现。如果静态库里某些方法没有任何地方调用,则这些没有被调用的方法或变量将会被丢弃,不会被静态链接    。
    动态链接:在程序运行时进行。动态链接在程序运行时才会将它们连接在一起形成一个完整的程序。
    两者不同之处:
        链接时间不同:前者在执行前,后者在执行时。
    优缺点互补:
    静态链接很浪费空间,更新比较困难,库函数修改时,需要重新进行编译链接形成可执行文件。因为空间的浪费在运行速度比较快。
    动态链接:多个程序执行时共享一个副本,节省空间,更新时比较方便,只需要只需要替换掉原本的目标文件,链接推迟到程序运行时,每个执行程序都需要链接,性能会有一定的损失。

 

 windows下vs编译产生的其他文件:

 

posted on 2019-07-27 11:12  云胡不喜。  阅读(441)  评论(0编辑  收藏  举报