静态库动态库

简介:

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文件夹下,但是不建议这样做

目录
相关文章
|
存储 SQL 大数据
大数据技术之ClickHouse---入门篇---介绍
大数据技术之ClickHouse---入门篇---介绍
|
弹性计算 Linux 云计算
阿里云上更新幻兽帕鲁Palworld服务器详细教程,附幻兽帕鲁搭建教程
如何快速在阿里云上更新幻兽帕鲁服务器?幻兽帕鲁更新之后,服务器需要同步更新才能继续游戏,大家可以按照以下操作完成服务升级。阿里云上更新幻兽帕鲁Palworld服务器详细教程,附幻兽帕鲁搭建教程。
|
前端开发
【第18期】一文读懂原子CSS框架
【第18期】一文读懂原子CSS框架
358 0
|
11月前
|
JSON Linux 数据格式
Python模块:从入门到精通,只需一篇文章!
Python中的模块是将相关代码组织在一起的单元,便于重用和维护。模块可以是Python文件或C/C++扩展,Python标准库中包含大量模块,如os、sys、time等,用于执行各种任务。定义模块只需创建.py文件并编写代码,导入模块使用import语句。此外,Python还支持自定义模块和包,以及虚拟环境来管理项目依赖。
Python模块:从入门到精通,只需一篇文章!
|
算法 Python
金融量化交易:使用Python实现遗传算法
金融量化交易:使用Python实现遗传算法
279 1
|
消息中间件 存储 Java
【图解RabbitMQ-2】图解JMS规范与AMQP协议是什么
【图解RabbitMQ-2】图解JMS规范与AMQP协议是什么
300 0
|
算法 搜索推荐 Java
排序:Java实现插入排序原理及代码注释详解
排序:Java实现插入排序原理及代码注释详解
191 0
排序:Java实现插入排序原理及代码注释详解
|
前端开发
三种引入css的方法
三种引入css的方法
221 0
|
存储 Java API
Box —— 我的开发助手
Box —— 我的开发助手
Box —— 我的开发助手