静态库动态库

简介:

1、库是什么

功能函数整合成一个库,库包含了编译好的代码和数据,方便使用
程序函数库分为:静态库,动态库,共享库

2、库分类

2.1静态库

程序执行前,就编译加入到目标程序里了
用gcc编译,在gcc后用-l来指定这个库函数
不想让人看到源代码,可以使用静态库

2.2动态库

程序执行时,由目标程序去调用
跟window的.dll相似

3、库的优缺点

静态库
优点:
1.运行快
2.发布程序无需提供静态库,因为已经在程序中(app中),移植方便
缺点:
1.程序大
2.更新,部署,发表麻烦。因为要重新编译生成目标程序
动态库
优点:
1.程序小
2.更新升级简单,因为app中没有库源代码,升级库就可以升级app
缺点:
1.运行慢,加载速度慢
2.发布程序需要提供动态库

4、库的制作

4.1静态库

静态库的格式xxx.a
1.生成xxx.o文件
gcc 文件名 -c
例:gcc ser.c -c
2.生成静态库文件
ar rcs lib库名.a xxx.o
例:ar rcs libser.a ser.o
ar是指令,rcs是指令参数,可以ar --help查看ar的参数说明

4.2动态库

动态库格式xxx.so
1.生成动态库文件
gcc -shared -fpic 文件名 -o lib库名.so
-shared:指定生成动态库
-fpic:fpic选项作用于编译阶段,在生成目标文件时就得使用该选项,以生成位置无关的代码。
例:gcc -shared -fpic ser.c -o libser.so

5、库的使用

静态库
gcc 编译的文件 -l库名 库查找路径(默认查找/usr/include)
例:gcc server.c -lser -L ./
动态库
编译和静态库一样,gcc server.c -lser -L ./ -o ser
动态库使用
1.查看系统环境变量命令export
2.通常环境变量一个宏:export LD_LIBRARY_PATH="动态库位置pwd命令出来",
指定该程序运行时候,在LD_LIBRARY_PATH所指定的路径去找库文件

注:临时环境变量,这种方法只能在一个终端窗口使用,换一个窗口就不能使用了

可以写一个脚本:
1.vi shart.sh

2.加一个可执行权限:chmod +x shart.sh
3.直接执行shart.sh
或者直接把库放到
/usr/lib文件夹下,但是不建议这样做

目录
相关文章
|
3月前
|
Linux Windows
静态库和动态库
本文详细介绍了静态库和动态库的概念及使用方法。在 Linux 系统中,静态库以 `libxxx.a` 形式存在,而动态库则为 `libxxx.so`。文章分别讲解了如何创建和使用这两种库,并提供了具体的命令示例。此外,还介绍了将库文件添加到系统目录的方法,包括直接复制到默认库路径、修改环境变量以及编辑系统配置文件等方案。适合初学者了解库文件的基本操作。
|
7月前
|
Linux 编译器 开发者
C/C++动态库与静态库 的详细解析
C/C++动态库与静态库 的详细解析
719 0
|
7月前
|
消息中间件 NoSQL Linux
静态库与动态库
静态库与动态库
静态库与动态库
vs2019使用静态库
vs2019使用静态库
317 0
|
存储 Cloud Native Linux
C++ 动态库与静态库的区别?
C++ 动态库与静态库的区别?
|
存储 Linux 编译器
什么是链接库 | 动态库与静态库
什么是链接库 | 动态库与静态库
186 0
|
Shell 开发工具 iOS开发
动态库下(5)
动态库下(5)
377 0
动态库下(5)
|
Shell 开发工具 C语言
动态库与静态库
本文目标:⭐认识动态静态库,学会结合gcc选项,制作动静态库⭐⭐了解动态库加载过程⭐。
动态库与静态库
|
vr&ar C语言 索引
静态链接和静态库
静态链接和静态库
186 0
vs2019使用动态库
vs2019使用动态库
218 0