加入收藏 | 设为首页 | 会员中心 | 我要投稿 晋中站长网 (https://www.0354zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux静态库,动态库,共享库

发布时间:2022-11-01 14:01:24 所属栏目:Linux 来源:网络
导读: 1、介绍
当我们在Linux下创建自己的程序函数库时,经常使用的工具是GUN,当我们需要某些功能时,我们可以通过这些编译好的封装的函数库进行使用,这样可以让程序更加简洁,模块化,且容易编

1、介绍

当我们在Linux下创建自己的程序函数库时,经常使用的工具是GUN,当我们需要某些功能时,我们可以通过这些编译好的封装的函数库进行使用,这样可以让程序更加简洁,模块化,且容易编译。

万能动态素材库_linux动态库_android 动态加载so库

静态函数库:程序执行前(编译)就加入到目标程序中

优点:1.(运行快)静态库被打包到应用程序中加载速度快

2.发布程序无需提供静态库,因为已经在app中,移植方便

缺点:1.(数据大)链接时完整的拷贝至可执行文件中,被多次使用就有多份冗余拷贝。

2.更新、部署、发布麻烦

linux动态库_android 动态加载so库_万能动态素材库

动态函数库和共享库是一样的,(在Linux上叫共享对象库,文件后缀是.so,window上叫动态加载函数库,文件后缀是.dll)

动态函数库:程序执行前(临时)就加入到程序中,由目标程序(动态)调用

优点:1.(数据小)链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序可以共用,节省内存。

2.程序升级简单linux动态库,因为app里面没有库的源代码,升级之后只要库的名字不变,函数名以及参数不变,只是实现做了优化,就能加载成功。

缺点:1.(运行慢)加载速度比静态库慢

2.发布程序需要提供依赖的动态库

android 动态加载so库_万能动态素材库_linux动态库

2.库的制作

静态库的制作:

先是把功能函数经过gcc(文件名.c) -c 编译成.o文件

ar rcs 静态库的名字 原材料

ar -rcs libtest.a 文件名.o(生成静态库libtest.a)

动态库的制作:

gcc -share -fpic 文件名.c -o libcalc.so(生成动态态库libcalc.so)

-shared 指定生成动态库

-fpic 标准,用于编译阶段,在生成目标文件就得使用该选项,以生成位置无关的代码。

3.库的使用

静态库的使用:

gcc (主函数.c) -ltset -L ./ -o mainProStatic

./mainProStatic

-ltest -l是指定要用的动态库,库名去掉lib与.a

-L 告诉gcc编译器从-L制定的路径去找静态库。默认从/usr/lib /usr/local/lib去找

动态库的使用:

gcc (主函数.c) -lcalc -L ./-o mainproDy

引用动态库,怎么指定动态库的位置

创建一个shell脚本(vi satrt.sh)

加入export LD_LIBRARY_PATH="/home/pi/program/test" ./mainProDy

保存退出(chmod +x start.sh)增加可执行权限

./mainprody

察看库的大小:du mainProStatic/mainProDy

(编辑:晋中站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!