精华内容
下载资源
问答
  • 静态库和动态库

    2019-01-15 16:59:57
    1.了解静态库和动态库   动态库:程序在运行时才会去链接动态库的代码,多个程序共享使用库的代码。 后缀名一般是.so 静态库:程序在编译链接的时候把库的代码链接到可执行文件中,程序运行的时候不再需要静态...

    1.了解静态库和动态库

     

    动态库:程序在运行时才会去链接动态库的代码,多个程序共享使用库的代码。  后缀名一般是.so

    静态库:程序在编译链接的时候把库的代码链接到可执行文件中,程序运行的时候不再需要静态库。  后缀名一般是.a

    简言之就是动态库在程序运行时才去库里加载需要的代码,而静态库在链接时就已经把需要的代码加载到自己的程序里。

     

    这点也造成了二者各有优缺点

    动态库

    优点:节省磁盘空间。程序相对来说不会太大。

    缺点:速度慢,每次都要去库里找,可移植性差。
     

    静态库

    优点:速度快,独立性强,可移植性强。

    缺点:占用内存,磁盒,程序大小相对来说较大。

     

    2.生成和使用静态库动态库

     

    首先我们写一个测试的程序

    //test.cpp
    #include <iostream>
    #include "add.h"
    #include "sub.h"
    
    using namespace std;
    
    int main()
    {
       int a = 30;
       int b = 10;
       cout << "add(a,b) = " << a << " + " << b << " = " << add(a,b) << endl; 
       cout << "sub(a,b) = " << a << " - " << b << " = " << sub(a,b) << endl; 
       return 0;
    }
    /
    //add.h
    #pragma once
    
    int add(int a,int b);
    
    //add.cpp
    #include "add.h"
    int add(int a,int b)
    {
        return a + b;
    }
    
    
    ///sub.h
    #pragma once
    
    int sub(int a,int b);
    
    //sub.cpp
    #include "sub.h"
    int sub(int a,int b)
    {
        return a - b;
    }

     

    先把两个.cpp文件变成.o文件如下操作:

    首先是静态库的生成

    第一条命令是生成静态库。

    第二条命令是查看静态库中的目录列表

     

    接下来我们使用我们生成的静态库

    我们可以看到正确的结果

    -L 表示指定库路径  需要链接的静态库在当前目录下所以参数是.

    -l  表示指定库名

    库名不是libmymath.a吗?  这里大家需要知道lib是一个前缀代表是动态库或动态库,静态库后缀名是.a  

    所以真正的库名是mymath

     

    那么如何生成动态库呢?

    生成动态库之前,我要先产生位置无关码,表示与位置无关 用  fPIC

    然后我们生成动态库

    生成动态库用shared命令

    我们总结一下生成动态库需要的两条命令

    fPIC:产生位置无关码

    shared:表示生成动态库

     

    接下来使用我们生成的动态库

    和静态库相同的参数

    -l  表示指定库名

    -L 表示指定库路径  

    要运行动态库我们要先做两件事

    1.拷贝.so文件到共享库路径下,一般是指/user/lib

    2.更改LD——LIBRARY_PATH

    我们发现依然可是成功,这就是动态库的生成和使用

     

     

     

     

     

     

    展开全文
  • 动态链接优点

    2012-02-21 18:42:30
    动态链接优点1. 共享代码、资源和数据 使用DLL的主要目的就是为了共享代码,DLL的代码可以被所有的Windows应用程序共享。2. 隐藏实现的细节 DLL中的方法可以被应用程序访问,而应用程序并不知道这些方法的细节。...
     动态链接库—优点1. 共享代码、资源和数据 使用DLL的主要目的就是为了共享代码,DLL的代码可以被所有的Windows应用程序共享。2. 隐藏实现的细节, DLL中的方法可以被应用程序访问,而应用程序并不知道这些方法的细节。3. 拓展开发工具的功能 由于DLL是与语言无关的,因此可以创建一个DLL,被C++、VB或任何支持动态链接库的语言调用。这样如果一种语言存在不足,就可以通过访问另一种语言创建的DLL来弥补。
    
    展开全文
  • 使用动态链接优点

    千次阅读 2011-01-04 13:41:00
    <br />使用动态链接优点   现代应用程序广泛地使用动态链接,其好处是:   ①同时运行的多个应用程序可以同时使用同一个动态链接,它们在内存中只是共享DLL文件的一个拷贝,...

    使用动态链接库的优点

     

    现代应用程序广泛地使用动态链接库,其好处是:

     

    ①同时运行的多个应用程序可以同时使用同一个动态链接库,它们在内存中只是共享DLL文件的一个拷贝,这样做不但节省了内存,而且减少了文件的动态交换;

     

    ②只要编写的应用程序函数、变量和返回值的类型和数量不发生变化,动态链接库中的函数可以不用重新编译链接而直接使用,这一点明显优于静态链接;

     

    ③只要遵循一定的规则,不同语言编写的应用程序可以调用同一个动态链接库,而不管这个函数执行什么操作;

     

    ④在设计应用程序时,将其拆分成功能相互独立的部件.DLL,为以后对这些功能部件各自升级提供较方便的途径;

     

    ⑤使资源数据独立于可执行程序之外,但又能较方便快速地访问它。

     

    动态链接库非常有利于软件的编写和更新,在编写程序时,可以把一个大型软件项目分割为多个单独模块。在这些模块中定义好它们的调用关系,然后分别由多个程序员进行编写。在各个模块内,程序员可以充分发挥他们的创造性,优化程序代码。而且,利用动态链接库对于软件的更新也是非常有好处的。在更新或者升级这个软件时,可以只更新这个软件的动态链接库。例如,编写一个游戏,当以后又推出了新的显示卡后,为了支持这种显示卡,不必全部重新编写这个程序,而只需重新编写游戏显示部分的DLL代码;发布升级版本时,只需要发布这些DLL文件就可以了。

    展开全文
  • 1. 共享库和静态库优缺点动态库优点节省空间。使用动态库生成的可执行文件占磁盘空间少;资源共享。系统中只需有一份就可让多个进程使用相同的功能;方便升级。接口不变的情况下,只需替换相应的库文件即可。缺点...

    89106a540e7205f96729d5c704fd369d.png

    1. 共享库和静态库优缺点

    动态库

    优点

    1. 节省空间。使用动态库生成的可执行文件占磁盘空间少;
    2. 资源共享。系统中只需有一份就可让多个进程使用相同的功能;
    3. 方便升级。接口不变的情况下,只需替换相应的库文件即可。

    缺点

    生成的可执行文件发布时必须将其依赖的动态库同时发布。

    静态库

    优点

    生成的可执行文件独立执行。软件发布方便。

    缺点

    1. 占用空间大。由于将所有的功能链接进可执行文件中,导致可执行文件占用大量磁盘空间;
    2. 不方便升级。升级时需要替换整个可执行文件。

    2. cmake 生成静态库和动态库

    指令:add_library()

    动态库

    add_library(hello SHARED hello.c 1.c 2.c ...)

    通过关键字 SHARED 生成动态库:libhello.so

    静态库

    add_library(hello STATIC hello.c 1.c 2.c ...)

    通过关键字 STATIC 生成静态库:libhello.a

    展开全文
  • DLL动态链接优点

    2010-01-08 11:51:00
    DLL的优点DLL的优点如下所示。1.使用较少的资源当多个程序使用同一个函数时,DLL可以减少在磁盘和物理内存中加载代码的重复量。这不仅可以大大影响在前台运行的程序,而且可以大大影响其他在Windows 操作系统上...
  • 静态库与动态库

    2020-06-07 01:01:44
    静态库与动态库1 静态库1.1 静态库概述1.2 静态库生成2 动态库2.1 动态库概述2.2 动态库生成3 静态库与动态库的使用3.1 准备文件3.2 静态库的使用3.3 动态库的使用4 静态库与动态库的区别 1 静态库 1.1 静态库概述 ...
  • 关于动态链接 动态链接允许一个模块仅需载入或执行一个导出的DLL函数。动态链接不同于我们熟悉的静态链接,使用静态链接时,链接程序会把库函数代码拷贝到每个需要的模块中。动态链接的类型 调用一个DLL中的函数...
  • Linux库之动态库、静态库 有关库的详情介绍: https://www.cnblogs.com/sunsky303/p/7731911.html https://blog.csdn.net/wk_bjut_edu_cn/article/details/81735956 1.库的介绍: 2.静态库 静态函数库,是在程序...
  • 动态库和静态库

    2020-05-19 21:28:25
    区别:静态库和动态库最本质的区别就是:该库是否被编译进目标(程序)内部。 分别介绍: 静态(函数)库 一般扩展名为(.a或.lib),这类的函数库通常扩展名为libxxx.a或xxx.lib 。 这类库在编译的时候会直接...
  • 其中库分为静态库、动态库二,静态库和动态库的区别1)Linux 下静态库:名字一般为 lib***.a利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的...
  • 静态库和动态库的对比一、程序编译成可执行程序的过程三、动态库制作过程四、静态库的优缺点五、动态库的优缺点 一、程序编译成可执行程序的过程 二、静态库制作过程 三、动态库制作过程 四、静态库的优缺点 优点...
  • 动态库与静态库

    2020-04-29 14:52:32
    一、静态库 1.**函数库拓展名:**libxxx.a -L 指定库路径 -l 指定库名 2.编译特点 程序在编译链接的时候把库的代码直接整和到可执行程序中. 3.可独立执行 静态库最大的优点就是编译完成的程序可以...二、动态库 1....
  • linux库引入之动态库和静态库 程序函数主要分为:静态函数库,动态函数库和共享函数库 静态函数库:在程序编译之前就加载到程序里面去了 缺点:代码量大,更新,部署,发布麻烦,链接时完整的拷贝到可执行文件中,被...
  • 什么是库: 预先编译好的二进制可执行文件 静态库(static library)就是将相关的目标模块打包形成的单独的文件。使用ar命令。 ...静态库的优点在于: ...程序员不需要显式的指定所有需要链接的目标模块...动态库(dynam
  • Linux静态库和动态库

    2020-07-14 16:18:29
    库分静态库和动态库两种。 静态库和动态库的区别 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后...
  • Linux中有两类函数库,分别是静态库和动态库。 静态函数库: 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,604
精华内容 641
关键字:

动态库优点