共享库和静态库

目录

1.什么是库文件:

2.静态库的生成和使用(简单举例):

1.生成:

 2.使用静态库:

 3.动态库的生成和使用(简单举例):

1.生成:

 2.使用:

 4.静态库和动态库的区别:


1.什么是库文件:

库是一组预先编译好的方法的集合。Linux系统存储的库的位置一般在:/lib 和 /usr/lib。

库有两种,一种是静态库,其命令规则为 libxxx.a,一种是共享库,其命令规则为 libxxx.so。

两种库函数的使用过程:

静态库在链接时,把需要的库函数拷贝粘贴过来。

共享库在链接时,把需要的库函数标记,需要时去动态加载。

2.静态库的生成和使用(简单举例):

1.生成:

要先把.c文件变成.o文件才能创建静态库。

 

 生成静态库:ar crv libfoo.a max.o min.o

使用 ar 命令将第一步编译的所有”.o”文件生成静态库,其中:

  •  c 是创建库
  • r 是将方法添加到库中
  • v 显示过程

 2.使用静态库:

创建主函数:

使用静态库“libfoo.a”和“main.c”生成可执行文件的过程:gcc -o main main.c -L. -lfoo

其中:

  •  -L 指定库的存储路径
  • -l 指定库的名称(不需要前面的‘lib’和扩展名‘.a’)

 3.动态库的生成和使用(简单举例):

1.生成:

把.c文件变成.o文件

生成动态库:gcc -shared -fPIC -o libfoo.so max.o min.o

 2.使用:

需要切换管理员权限把生成的动态库拷贝到/usr/lib下边:sudo cp libfoo.so /usr/lib

再生成可执行文件:gcc -o main main.c -L. -lfoo(这块-L可写可不写,因为它所指定的路径无用)

 4.静态库和动态库的区别:

静态库在链接时,把需要的库函数拷贝粘贴过来,相对来说:速度快,浪费空间。

共享库在链接时,把需要的库函数标记,需要时去动态加载,相对来说:速度较慢,体积小。

猜你喜欢

转载自blog.csdn.net/weixin_57133901/article/details/124595611