当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > 静态库和动态库的区别及制作

静态库和动态库的区别及制作 时间:2018-09-26      来源:未知

静态库的特点:

编译(链接)时把静态库中相关代码复制到可执行文件中

程序中已包含代码,运行时不需要静态库

程序运行时无需加载库,运行速度快

占用更多磁盘和内存空间

静态库升级后,程序需要重新编译链接

静态库的创建:

1--确定库中函数功能、接口

2--编写库源码

3--编译生成目标文件 gcc -c xxx.c -Wall

4--创建静态库 $ar crs libxxx.a xxx.o

5--查看库中符号信息 $nm libxxx.a

6--编写应用程序test.c

7--编译test.c并链接静态库libxxx.a gcc -o test test.c -L. –lxxx

动态库的特点:

编译(链接)时仅记录用到哪个共享库中的哪个符号,不复制共享库中相关代码

程序不包含库中的代码,尺寸小

多个程序可共享同一个库

程序运行时需要加载库

库升级方便,无需宠幸你编译程序

使用更方便

动态库的创建:

1--确定库中函数的功能、接口

2--编写库源码

3--编译生成目标文件 &gcc -c -fPIC xxx.c yyy.c -Wall

4--创建共享库 $gcc –shared –o libcommon.so.1 xxx.o yyy.o

5--为共享库文件创建链接文件 ln -s libcommon.so.1 libcommom.so

6--符号链接文件命名规则 lib<库名>.so

7--编写应用程序test.c

8--编译test.c并链接共享库libcommon.so $gcc –o test test.c -L. –lcommon

9--添加共享库的加载路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

为了让系统能找到要加载的共享库,有三种方法

把库拷贝到/usr/lib 或/lib目录下

LD_LIBRARY_PATH环境变量中添加库所在路径

添加/etc/ld.so.conf.d/*.conf文件,执行ldconfig

上一篇:Find命令总结

下一篇:Service中onRebind何时被调用

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部