zoukankan      html  css  js  c++  java
  • 静态链接和动态链接

    转自:https://blog.csdn.net/qq_26079093/article/details/101175146

    https://blog.csdn.net/kang___xi/article/details/80210717

    1.编译

    1. 预处理:处理一些#号定义的命令或语句(如宏、#include、预编译指令#ifdef等),生成*.i文件;
    2. 编译:主要是进行词法分析、语法分析和语义分析等,生成*.s的汇编文件;
    3. 汇编:这个过程将对应的汇编指令翻译成机器指令,生成可重定位的二进制目标*.o文件。

    2.链接

    静态链接和动态链接两者最大的区别就在于链接的时机不一样,静态链接是在形成可执行程序前,而动态链接的进行则是在程序执行时。

    //也就是说,生成.o文件后就要生成可执行程序。

    静态链接的过程就已经把要链接的内容已经链接到了生成的可执行文件中,就算你在去把静态库删除也不会影响可执行程序的执行;

    而动态链接这个过程却没有把内容链接进去,而是在执行的过程中,再去找要链接的内容,生成的可执行文件中并没有要链接的内容,所以当你删除动态库时,可执行程序就不能运行。

    所以动态链接生成的可执行文件要比静态链接生成的文件要小一些。

    3.静态链接

  • 相关阅读:
    黑苹果崩溃恢复
    黑苹果声音小解决方法
    idea plugin 进度条
    phpstorm 插件
    awesome mac
    webstorm vue eslint 自动修正配置
    Laravel/php 一些调试技巧
    php ZipArchive 压缩整个文件夹
    laravel 模型事件 updated 触发条件
    php 开启 opcache 之后 require、include 还会每次都重新加载文件吗?
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14193040.html
Copyright © 2011-2022 走看看