<5>Linux-静态库和动态库

1 库及库的分类

  • 库本质:是二进制形式的目标代码(.o)
  •  库的作用? 

†   库的分类:静态库和动态库(共享库)。

  •  静态库和动态库的区别

          如果程序是在编译时加载库文件的,就是使用了静态库,静态库的文件名格式是“lib*.a”。     如果是在运行时加载目标代码,就使用了动态库,动态库的文件名格式是

2 静态库的创建

  • 第1步:编辑.c  .h文件。
  • 第2步:生成.o文件 。
  • 第3步:ar –r  目标库文件名称(不成文规定,lib开头  .a结尾)  目标文件列表

          例如:ar -r  libmath.a     f1.o

静态库的使用

  • 方法1:参数法[推荐]

       格式:gcc  main.c  -l math  -L   ./

             -L:告诉编译器去哪儿找该库(库路径)

            如:gcc  main.c –lmath –L ./  

  • 方法2:直接法

格式:gcc  main.c  libmath.a

如何向一个已经存在的库增加模块

  • ar  -r  创建静态库并将目标文件加入到静态库中。
  • ar –t  查看库中的模块名称
  • ar  -d 删除库中的一些模块
  • ar  -q 向库追加模块

3  动态库

动态库的创建

  • 第1步:编辑.c   .h文件。
  • 第2步:生成.o文件。 gcc -c -fpic xxxx.c
  • 第3步:gcc -shared xxxxx.o yyyy.o -o libxxx.so
  • 将第2和3合并:gcc -shared -fpic xxx.c yyy.c -o libxxx.so

 

动态库的使用

  • 方法1:参数法[推荐]
  •               如:gcc  main.c –lmath –L ./  
  • 方法2:直接法
  • 格式:gcc  main.c  libmath.a
  • 注意:将libxxx.so放到/lib下

 

posted @ 2021-06-18 17:00  他乡一故知  阅读(105)  评论(0编辑  收藏  举报