当前位置: 首页 > news >正文

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查看内存大小

http://www.lryc.cn/news/171554.html

相关文章:

  • ESP-IDF学习——1.环境安装与hello-world
  • 【算法】二分答案
  • 阿曼市场最全开发攻略,看这一篇就够了
  • 探讨UUID和Secrets:确保唯一性与数据安全的利器
  • 06-Redis缓存高可用集群
  • LCP 18.早餐组合
  • Tomcat调优【精简版】
  • 通过NDK编译C程序运行在iMX6q开发板上
  • 【学习笔记】Java 一对一培训(2.1)Java基础语法
  • 外贸独立站哪家好?推荐的独立站建站平台?
  • 六、变量与常量
  • Fork() 函数:“父” 与 “子” 进程的交互(进程的创建)
  • JupyterNotebook设置Python环境的方法步骤
  • 腾讯云阿里云云服务器 Linux 操作系统 BT 宝塔面板快速建站教程
  • 【Linux】死锁理解
  • 基于Java所涉及的人工智能的框架
  • 【力扣】三角形最小路径和
  • 【Linux】指针常量和常量指针
  • LCP 22.黑白方格画
  • Java并发编程第8讲——ThreadLocal详解
  • 2023复旦大学计算机科学技术(网络空间安全)保研记录
  • linux系统通过docker安装python的jieba,如何找到jieba路径替换分词文件
  • Python Functions-函数
  • 【人工智能】机器学习的入门与提升
  • WEB漏洞原理之---【XMLXXE利用检测绕过】
  • element-table排序icon没有点亮
  • 传统的经典问题 Java 的 Interface 是干什么的
  • Linux 文件 目录管理
  • QT信号槽实现原理
  • 7-7 求鸡兔数量