<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下