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

大话C语言:第25篇 动态库

1 动态库概述

        C语言动态库(也称为共享库)是在程序运行时被加载到内存中的库文件,它包含了可由多个程序共享的代码和数据。动态库在编译时不会被直接链接到目标程序中,而是在程序运行时动态加载。这种特性使得动态库具有一些优势,如节省磁盘空间、便于更新和维护、以及支持多个程序同时共享库代码。

        动态库通常以.so(在Linux和类Unix系统中)或.dll(在Windows系统中)作为文件扩展名。创建动态库的过程通常包括编写源代码文件、编译生成目标文件、然后使用特定的编译器选项(如-shared)将这些目标文件链接成动态库文件。

        当程序需要使用动态库中的函数或数据时,它会在运行时通过操作系统提供的动态链接机制来加载这个库。一旦库被加载,程序就可以通过库中的导出符号来调用函数或访问数据。这种动态链接的方式使得程序在编译时不需要知道所有依赖项的具体实现,从而提高了程序的灵活性和可维护性。

        需要注意的是,由于动态库是在运行时加载的,因此在使用动态库的程序中,需要确保动态库文件的路径正确,并且操作系统能够找到并加载这个库。此外,如果动态库更新了版本,程序在运行时可能会加载到新的库版本,这也需要程序在设计时考虑到版本兼容性和更新策略。

2 动态库制作

例如,实现一个简单的数学运算MathFun.c

// 动态库中的函数,用于加法  
int add(int a, int b) 
{  return a + b;  
}  // 动态库中的函数,用于减法  
int subtract(int a, int b) 
{  return a - b;  
}

通过使用gcc编译器和-shared选项来创建动态库。

gcc -shared -o MathFun.so MathFun.c

将会生成一个名为MathFun.so的动态链接库文件。

3 动态库使用

   export命令用于设置或显示环境变量。可以通过设置LD_LIBRARY_PATH环境变量来指定动态库的搜索路径,具体步骤:

  • 找到你的动态库文件,例如,MathFun.so 假设它位于/home/wanghao/code/dynamicdemo/lib目录下

  • 使用export设置LD_LIBRARY_PATH,在终端中,你可以使用以下命令来设置LD_LIBRARY_PATH环境变量

export LD_LIBRARY_PATH=/home/wanghao/code/dynamicdemo/lib/:$LD_LIBRARY_PATH

注意,把新的库路径添加到了现有LD_LIBRARY_PATH的前面,并用冒号:分隔。这样做是为了确保你的库路径在搜索时具有更高的优先级。

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

相关文章:

  • 数据分析:RT-qPCR分析及R语言绘图
  • 无线模块通过TCP/IP协议实现与PC端的数据传输解析
  • 嵌入式实验---实验一 通用GPIO实验
  • 中国首例!「DataKit」上架亚马逊云科技 Marketplace add-ons
  • 【博士每天一篇文献-算法】Progressive Neural Networks
  • 深圳中小企业融资攻略,贷款方法大盘点!
  • Android的自启动
  • 开源VisualFbeditor中文版,vb7 IDE,VB6升级64位跨平台开发安卓APP,Linux程序
  • github安全问题token和sshkeys
  • 超详细的selenium使用指南
  • LogicFlow 学习笔记——1. 初步使用 LogicFlow
  • 场外个股期权通道业务是什么意思?
  • 分页插件结合collection标签后分页数量不准确的问题
  • git diff 命令
  • Code Review常用术语
  • HashMap 源码中的巧妙小技巧
  • 极具吸引力的小程序 UI 风格
  • 数据库 | 试卷五试卷六试卷七
  • 网页五子棋对战项目测试(selenium+Junit5)
  • stable diffusion 局部重绘 reference-only api 接口调试
  • 浪潮信息内存故障预警技术再升级 服务器稳定性再获提升
  • JWT整合Gateway实现鉴权(RSA与公私密钥工具类)
  • vue实现全屏screenfull-封装组件
  • 【LinkedList与链表】
  • 为数据安全护航,袋鼠云在数据分类分级上的探索实践
  • Spring 循环依赖详解
  • 项目经理真的不能太“拧巴”
  • 企业如何选择合适的CRM工具?除Salesforce之外的10大主流选择
  • 每年1-1.2万人毕业,男女比例约3:1,测绘工程的就业率如何
  • JimuReport 积木报表 v1.7.6 版本发布,免费的低代码报表