博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态库与动态库
阅读量:5290 次
发布时间:2019-06-14

本文共 952 字,大约阅读时间需要 3 分钟。

静态库复制静态库作为程序代码段的一部分,在可执行程序运行前就已经加入到执行码中,

    成为执行程序的一部分

    1.优点:将函数库中的函数本地化,寻址方便,速度快,等于字典一函数使用效率

    2.缺点:笑话系统资源较大,每个进程使用静态库都要复制一份,无端浪费内存

    3.使用场景:多用于核心程序,保证时效性,可以忽视空间

 

ar rcs libmylib.a file1.o

 

 

动态库(共享库)

  机制:共享代码(不共享数据)

  优点:节省内存(共享),易于更新(动态链接)

  缺点:相较于静态库调用速度略慢(延迟绑定机制)

  使用场景:1.对程序执行的速度要求不是特别强烈,而相对于系统资源有一定要求的场景

       2.对于更新比较频繁的程序

          1)停止运行程序

          2)使用新库覆盖旧库,保证“接口”一致

          3)重新启动程序

  重点强调:1.动态库是否加载到内存,取决于程序是否运行

       2.动态库加载到内存的位置不固定

共享库的创建比较简单,基本有两步。首先使用-fPIC或-fpic创建目标文件,PIC或pic表示位置无关代码,然后就可以使用以下格式创建共享库了: gcc -share -Wl,-soname,your_soname -o library_name file_list library_list

 

gcc -fPIC -c a.cgcc -fPIC -c b.cgcc -shared -Wl -o libmyab.so a.o b.o加载共享库方法:1.拷贝自己制作的共享库到/lib或者/usr/lib2.临时设置LD_LIBRARY_PATH, export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径3.永久设置,把export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径 设置到∼/.bashrc或者/etc/profile4.设置/etc/ld.so.conf, 把库所在路径追加到此配置文件里

 

转载于:https://www.cnblogs.com/xiangtingshen/p/10415915.html

你可能感兴趣的文章
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
opencv安装配置
查看>>
JAVA-初步认识-第六章-面向对象(举例)
查看>>
js合并数组
查看>>
cNoteSetCursor_命令窗口光标设置
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
Benelux Algorithm Programming Contest 2014 Final(第二场)
查看>>
随机变量的期望为什么把不是自己密度函数当成自己的权重来求期望呢?
查看>>
6-1 并行程序模拟 uva210
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>