[4]Linux静态库与动态库

来源:互联网 发布:讯龙恢复软件下载 编辑:程序博客网 时间:2024/06/01 20:17

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

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

[2]制作静态库

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

[3]静态库的使用

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

[4]制作动态库

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

[4]动态库的使用

例:gcc test.c –lmylib -o test

[5]评论

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


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

0 0
原创粉丝点击