Linux动态库

定义:动态函数库,是在程序执行时动态(临时)由目标程序去调用

优点:

调用时不复制,程序运行时动态加载到内存,供程序调用,系统只加载一次,多个程序可以共用,节省内存。

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

缺点:

加载速度比静态库慢,占用内存大

版本更新麻烦,发布程序需要提供依赖的动态库

命名规则:动态库文件名的命名方式是"libxxx.so",库名前加"lib",后缀用".so","xxx"为动态库名。

动态库的制作:

生成 .so 文件: gcc -shared -fpic SumSub.c -o libSum.so

**-shared :**指定生成动态库

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

动态库的使用:

gcc main.c -lSumSub -L ./

-L告诉gcc编译器从-L制定的路径去找动态库。默认是从/usr/lib 或 /usr/local/lib去找,可以修改 ,如:gcc main.c -I ./include/ -L ./lib -lmycalc

如果编译后无法运行:

提示找不到.so文件,需要把编译的动态库放到Linux的 /usr/lib

使用sudo cp libfilename.so /usr/lib 再次运行

另一种常用方法: 设置指定动态库的临时位置(只能在当前位置使用):

比如配置临时环境变量,只针对当前路径 export LD_LIBRARY_PATH="/home/pi/你的文件路径"

改进:

通过shell脚本命令,把环境变量和./main放进去,给脚本增加可执行权限:vi start.sh

写入: export LD_LIBRARY_PATH="/home/pi/你的文件路径"

./main

保存

增加权限:chmod +x start.sh

最后运行./start.sh

du xxx查看内存大小

相关推荐
一个人旅程~3 分钟前
让你老旧电脑复活方案之linux拯救旧电脑神器—-安装linuxmint后使用手机或外置无线网卡实现(免驱动)快速上网功能
linux·经验分享·电脑
曦云沐11 分钟前
Linux 下极简安装 Conda(Miniconda / Anaconda),5 分钟搞定环境配置
linux·运维·conda
就叫年华吧丶15 分钟前
Git Bash、CMD 与 PowerShell 的区别详解
linux·git·命令行·powershell·cmd·gitbash
key_3_feng15 分钟前
基于OpenClaw的Alibaba Cloud Linux 3自动化部署YashanDB深度方案
linux·运维·自动化·yashandb
zzzsde21 分钟前
【Linux】进程信号(2)保存信号与信号处理
linux·运维·服务器·算法
tianyuanwo23 分钟前
从virsh create权限错误说起:Linux 文件权限的设计哲学与排查心法
linux·权限
代码飞天25 分钟前
CTF之文件上传——你知道我在你的服务器上放了什么吗
运维·服务器
孙同学_29 分钟前
【Linux篇】详解TCP/UDP传输层协议:全面拆解三次握手、四次挥手及可靠性机制
linux·tcp/ip·udp
wsdswzj43 分钟前
web与web服务器基础安全
服务器·前端·安全
小此方1 小时前
Re:Linux系统篇(一)从浅谈操作系统历史背景到安装部署云服务器
linux·运维·服务器