Linux 静态库的创建和使用

FBshark / 2023-07-21 / 原文

参考文章:《【Linux】静态库和动态库的创建与使用--示例讲解》

 

一、库的种类

Linux 下的库有两种:静态库 和 动态库(共享库);

静态库:程序在编译链接的时候把库的代码链接到可执行文件中, .a 为后缀

动态库:程序在运行的时候才去链接动态库(共享库)的代码,可以多个程序共享使用库的代码,通常以.so为后缀;

二、静态库和动态库的优缺点

静态库:把库的代码载入可执行文件中,因此体积较大,当静态库中的内容更新后需要重新编译;由于编译器或链接器知道实际进入程序的代码,可以进行优化,运行速度会快一些;

动态库:只在程序运行时载入内存,因此体积较小,共享库如果发生变化不需要重新编译;运行速度相对慢一些;

三、静态库的创建与使用

1.创建动态库流程:

(1)将代码文件编译成目标文件.o

gcc  test.c -o test.o 

(2)通过ar工具将目标文件打包成.a静态库文件

ar -crv libMytest.a test.o

ar 是一个专门控制静态库的命令

-c:创建静态库,不管库是否存在

-r 把目录文件合并成一个静态库,如果静态库文件已经存在则更新。

-v :使用详细模式

-q 向静态库中添加目录文件

-t 查看静态库中有哪些目标文件

-d 从静态库中删除目标文件-x 把静态库展开为目标文件

 

2.使用静态库

共有两种方法,分别如下:

(1)直接调用

把静态库当作目标文件一样

gcc 1.c libMytest.a -o test

(2)通过gcc -L参数来指定库的路径

gcc 1.c -L./ -lMytest -o test

-L:表示要连接的库所在目录

-l:指定库的名称(不需要前面的lib和扩展名.a只留下中间部分)