首页 > 编程语言 >【c&c++】为什么库要分为静态库和动态库

【c&c++】为什么库要分为静态库和动态库

时间:2022-11-17 14:14:51浏览次数:42  
标签:程序运行 静态 c++ 程序执行 库是 库要 动态 链接

根据链接时期的不同,库又有静态库和动态库之分。静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。而动态库是在程序执行的时候被链接的。程序执行完,库仍需保留在系统上,以供程序运行时调用。链接静态库从某种意义上来说是一种复制粘贴,被链接后库就直接嵌入可执行程序中了,这样系统空间有很大的浪费,而且一旦发现系统中有bug,就必须一一把链接该库的程序找出来,然后重新编译,十分麻烦。而动态库刚好弥补了这个缺陷,因为动态库是在程序运行时被链接的,所以磁盘上只需保留一份副本,一次节约了空间,如果发现bug或者是要升级,只要用新的库把原来的替换掉就可以了。静态库是不是一无是处了呢?非也。如果代码在其他系统上运行,且没有相应的库时,解决办法就是使用静态库。而且由于动态库是在程序运行的时候被链接,因此动态库的运行速度比较慢。

标签:程序运行,静态,c++,程序执行,库是,库要,动态,链接
From: https://www.cnblogs.com/opensmarty/p/16899282.html

相关文章

  • 【c&c++】链接静态库文件时的搜索路径
    经测试,链接静态库的时候静态库的搜索路径包括/lib;/lib64;/usr/lib;/usr/lib64/;/usr/local/lib;/usr/local/lib64, 静态库文件完整的搜索顺序:比如我们要生成的最终可......
  • 【c&c++】如何创建动态库
    静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行。而依赖动态库的程序其实也有链接动态库的阶段,只不过这个链接并不是真......
  • 【c&c++】 -fpic 与-fPIC的区别
        在编译动态库的时候,我们应该需要使用-fpic或-fPIC参数。pic与PIC的异同相同点:都是为了在动态库中生成位置无关的代码。通过全局偏移表(GOT)访问所有常量地址......
  • 【C++高级编程】(二)设计专业的C++程序
    本章内容:程序设计的定义程序设计的重要性C++程序设计的特点高效C++程序设计的两个基本主题:抽象以及重用不同类型的重用代码代码重用的优缺点重用代码的常用策略及......
  • c++多线程thread用法小例子
    测试分布式存储系统时,针对并发测试,同时创建500个文件,采用这种方法。#include<iostream>#include<thread>usingnamespacestd;voidproc(inta){cout<<"子线......
  • C++ Tips:static const size_t nops、string substr、upper_bound、find()
    维基百科连接......
  • C/C++学生综合测评系统
    C/C++学生综合测评系统项目十六学生综合测评系统(2周)[目的要求]学生根据所学的程序设计基础原理与程序设计的知识,能够针对-一个小型的程序设计基础管理系统,进行系统的......
  • 【c&c++】C语言中#ifdef,#ifndef和#endif的作用
    现在规定一下头文件书写规范,根据陈皓编写的跟我一起些makefile,一定要记住:头文件中应该只是声明,而定义应该放在C/C++文件中。否则如果出现有定义,比如头文件中有inta=2;如......
  • ACV1引擎脚本处理(C++)
    推荐在Github进行阅读:ACV1引擎脚本处理(C++)ACV1引擎脚本处理(C++)0x00知识背景开始处理脚本之前希望大家熟悉或至少用过以下知识内容。1、C基础语法2、C++面向对象基......
  • c++定义二维数组
     vector<vector<int>>vec;        //定义行列未知的二维数组vector<vector<int>>array(5);     //定义行为5的二维数组vector<vector<......