linux中的显式运行时链接---dlopen、dlsym、dlerror、dlclose搞起

本文介绍了Linux下显式运行时链接的概念,与隐式链接相比,这种方式提供了更大的灵活性,尤其适用于长时间运行的服务。通过dlopen动态加载库,dlsym获取符号,dlerror处理错误,以及dlclose关闭库,程序员可以实现按需加载和升级动态库。示例代码展示了如何在没有显式链接libtest.so的情况下编译和运行程序。
摘要由CSDN通过智能技术生成

        之前, 我们在linux下制作过动态库, 并卖过。 当时我们采用的是隐式链接, 也就是说, 在代码中, 我们不用去管如何打开动态库、如何链接(这些活都交给了链接器), 只需要管如何调用就行。  隐式链接的动态库被进程加载到内存后, 就一直站着这个坑, 直到进程终结。 费时费力, 浪费地盘, 而且不灵活。

       于是, 一种动态加载(程序中指定加载)的方式就出现了, 这就是我们今天要说的显式运行时加载, 这个加载、卸载过程受程序员本身控制(而非链接器), 所以有了更大的自由度。 对于一些需要长时间运行的程序(如后台服务), 利用显式运行时链接链接就很有好处了, 非常便于升级so库。

       废话少说, 直接撸起:

       taoge_add.c的代码为:

int add(int x, int y)
{
    return x + y;
}
       main.c的代码为:

#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>

typedef int (*pFUN)(int, int); // 函数指针类型

int main()
{
    void *pHandle = NULL;
    char *pError = NULL;
    pFUN pfun = NULL;

    pHandle = dlopen("./li
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值