欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于静态库和动态库

程序员文章站 2022-06-04 12:38:30
...

写在前面的话:

  1. 版权声明:本文为博主原创文章,转载请注明出处!
  2. 博主是一个小菜鸟,并且非常玻璃心!如果文中有什么问题,请友好地指出来,博主查证后会进行更正,啾咪~~
  3. 每篇文章都是博主现阶段的理解,如果理解的更深入的话,博主会不定时更新文章。
  4. 本文最后更新时间:2020.7.27

正文开始

概念解释

库函数:库函数(Library function)是把函数放到库里,供别人使用。
库文件:看不到库文件里定义的函数和变量,但是可以使用。

库文件分为两种:

  1. 静态库(.a):在编译时将库文件里的代码搬迁到可执行文件里
  2. 动态库(.so):在执行时将需要的库文件里的代码搬迁到可执行文件里

静态库

静态库的创建

gcc -c 源文件.c
ar -rcs 静态库名 目标文件1 目标文件2

c:create,如果库文件不存在,则创建该库文件
r:replace,如果库文件存在,则替换原文件
s:更新库文件

例如,将add.c做成库文件:

  1. 将 add.c 编译为 add.o 文件:gcc -c add.c
  2. ar -rcs libadd.a add.o

提醒:add是名字,一定要加前缀、后缀

静态库的使用

静态库创建成功之后,对全局变量和函数进行声明,在编译的时候加上库文件就行了

gcc -o file file.c -L -lname

如 add 的例子:

gcc -o main main.c -L. -ladd

-L:指定库的路径
-L.:当前目录

动态库

gcc -shared -fPIC add.c -o libadd.so

依赖于动态库编译的文件和依赖于静态库编译的文件的优缺点

  1. 使用静态库代码体积大,动态库代码体积小
  2. 使用静态库执行效率高,动态库执行效率低
  3. 使用静态库不利于升级(升级麻烦,需要重新编译),使用动态库易于升级
  4. 使用静态库编译速度慢,使用动态库不需要加载,编译速度快
  5. 使用静态库代码布局更方便

什么时候使用动态库或静态库?

要求升级,动态库
对执行效率有要求,静态库
对编译速度有要求,动态库

上一篇: Mysql PDO基础操作

下一篇: cidr