1 linux提供了加载和处理动态链接库的系统调用

2 主要函数

1) dlopen、
    dlopen以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程,打开模式如下:
RTLD_LAZY 暂缓决定,等有需要时再解出符号
RTLD_NOW 立即决定,返回前解除所有未决定的符号。

2) dlsym、
    dlsym通过句柄和连接符名称获取函数名或者变量名

3) dlclose
    dlclose来卸载打开的库

4) dlerror
    dlerror返回出现的错误

3 测试Demo

1)写一个add.c文件,然后编译成一个libadd.so,add.c文件如下

int add(int a, int b)
{return a + b;
}int sub(int a, int b)
{return a - b;
}

编译参数 gcc -fPIC -shared
编译命令

gcc -fPIC -shared add.c -o libadd.so

我们把生成的so拷贝到我们需要测试的test.c同一个目录下
test.c文件如下

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h># define PATH "./libadd.so"typedef int(*Fun)(int, int);int main()
{void  *handle;char *error;Fun fun

linux c之动态打开链接库(dlopen dlsym dlclose)相关推荐

  1. java 项目加载dll文件,Java动态调用链接库dll文件

    Java动态调用链接库dll文件 Java动态调用链接库dll文件 因为项目需要,用到了java调用dll文件中的方法.写成dll文件大多是用C语言弄成的,对于我这个纯粹干java的人员来说,着实让我 ...

  2. Linux 关于动态链接库以及静态链接库的一些概念

    From http://os.rdxx.com/Linux/LinuxRudiment/2008/5/17017197011.shtml 库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. ...

  3. Linux gcc 制作动/静态链接库

    gcc 静态链接库 以 math.c为例 gcc -c math.c ar rcs libmath.a math.o ar命令 将多个文件打包成一个备份文件 参数r:用来替换库中已有的目标文件,或加入 ...

  4. Linux环境下gcc编译链接库-lz -lrt -lm -lc都是什么库?

    编译链接库:-lz -lrt -lm -lc都是什么库 -lz      压缩库(Z) -lrt     实时库(real time):shm_open系列 -lm     数学库(math) -lc ...

  5. VS无法打开源文件及无法打开链接库文件的解决方法

    一.无法打开源文件 依次点击"项目--配置属性--C/C++--常规",在"附加包含目录"中加入.h文件所在的文件夹路径 二.无法打开文件"XXX.l ...

  6. VS动态/静态链接库的使用方法

    c++的链接库库分为静态.动态链接库两种.使用静态库编译时为静态编译,静态编译将静态库中的代码编译进程序,生成的程序能够独立运行.而使用动态链接库在编译时为动态编译,动态编译不将动态库中的代码编译进程 ...

  7. Linux下动态链接库与静态链接库(编写、编译)

    这里写目录标题 函数库的概念 动态库的编译 静态库的编译 动态库相对于静态库的优点和缺点 优点 缺点 函数库的概念 函数库一般分为静态库和动态库两种. 静态库: 是指编译链接时,把库文件的代码全部加入 ...

  8. LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror

    dlopen 基本定义 功能:打开一个动态链接库  包含头文件:  #include <dlfcn.h>  函数定义:  void * dlopen( const char * pathn ...

  9. LINUX下动态链接库的使用-dlopen dlsym dlclose dlerror【zt】

    dlopen 基本定义 功能:打开一个动态链接库 包含头文件: #include <dlfcn.h> 函数定义: void * dlopen( const char * pathname, ...

最新文章

  1. plsql配置远程连接数据库
  2. fastText中的子词嵌入和高效文本分类:简单高效性能好
  3. 【计算理论】计算复杂性 ( coNP 问题 | coNP 完全 | P、NP、coNP 相互关系 )
  4. ACL 2019 | 巧用文本语境信息:基于上下文感知的向量优化
  5. Linux操作系统的性能将主要取决于,大学计算机基础试题题库及复习资料
  6. JS的对象及其属性和方法
  7. Xftp远程连接出现“无法显示文件夹”的问题补充
  8. python dataframe批量将列名加后缀_Python中的dataframe对象如何用相同的列名堆叠两个表,并从行堆叠它们以形成一个表,Dataframe,将,具有,叠加,起来,上,组成...
  9. Android AIDL Service 跨进程传递复杂数据
  10. AD14插入原理图模板
  11. php 生成会员卡号,PHP编程:PHP实现生成唯一会员卡号
  12. 关于计算机的英语演讲ppt模板,英语演讲ppt模板
  13. android投影到创维电视,安卓手机投屏到电视的3个方法,赶紧收藏!
  14. 计算机打印机共享失败,打印机共享失败终极解决办法
  15. yocto系列讲解[实战篇]70 - meta-iotedge移植笔记
  16. 2018年个人所得税Excel计算公式
  17. 【STM32+cubemx】0020 HAL库开发:以太网ENC28J60芯片和TCP、UDP简单应用
  18. 大数据-------元数据管理
  19. CentOS7下载与图文安装
  20. 中国移动的用户ARPU重新进入上升通道,员工薪酬也稳步上涨

热门文章

  1. IT与业务之间的鸿沟根源
  2. Docker小白到实战之容器数据卷,整理的明明白白
  3. 终于来了!微软正式推出 VS Code 测试 API
  4. 日志ILog(文件日志/控制台日志/控件日志/网络日志)
  5. NET问答: 如何将十六进制的 #FFDFD991 转成 C# 中的 Color 类?
  6. 一日一技:ASP.NET Core Api网关Ocelot初探
  7. 微服务技术栈及分享计划
  8. BCVP开发者说第4期:Remember.Core
  9. Istio Pilot架构解析
  10. Magicodes.IE 2.0发布