[4]Linux静态库与动态库

[1]Linux静态库与动态库简介

  • Linux应用程序使用的主要函数库均存放于/lib, /usr/lib目录下,其中采用.so.方式命名的是动态函数库,而以*.a方式命令的是静态函数库。
  • 程序所要用到的库函数代码在链接时全部被copy到程序中。
  • 导致的问题:如果有多个进程在内存中同时运行,并且使用了相同的库函数,那么就会有多份拷贝,这就是对空间的浪费。

[2]制作静态库

1.  gcc –c mylib.c –o mylib.o
2.  ar cqs libmylib.a mylib.o
3.  将制作好的libmylib.a 复制到/usr/lib

[3]静态库的使用

-lname:GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。例:

gcc test.c –lmylib -o test

[4]制作动态库

1. gcc –c mylib.c –o mylib.o
2. gcc -shared -fPIC mylib.o -o libmylib.so
3. 将制作好的libmylib.so 复制到/usr/lib
-fpic 使输出的对象模块是按照可重定位地址方式生成
的。
-shared 指明产生动态链接库。

[4]动态库的使用

例:gcc test.c –lmylib -o test

[5]评论

静态库和动态库在发布时候还应该提供相应的头文件(.h)方便调用。
在系统移植时需要为嵌入式系统添加静态库和动态库(如glibc和Ulibc)。
进行交叉编译时也应该考虑链接库的问题。


来自国嵌【2014】应用程序开发

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值