Linux程序运行中加载动态库

本文介绍了Linux程序如何在运行时动态加载库,这种方式常用于实现插件系统,允许程序在不更新主体的情况下更新或增加功能。通过dlopen函数,开发者可以实现不同开发人员按统一接口提供的动态库,主程序无需修改源码即可调用新的功能。
摘要由CSDN通过智能技术生成

Linux程序运行中加载动态库

Linux C/C++程序通常是在编译的时候链接依赖的动态库.
同时,也提供一种在运行时加载动态库的方法.(具体man dlopen中有说明和使用范例.)

应用的场景,暂时想到是 :

  • 类似插件.不用更新整个应用程序,通过更新或新增动态库,实现更新或者增加功能.

    在之前的一个开源的项目streamtunner中就有使用这种. 用户可以更新或自行新增网络源.

  • 方便更新和调试

    由不同开发人员实现统一接口,按照动态库的形式输出. 调用者可以在不修改源码同时不用重新编译主程序的情况下,调用接口实现.

针对第二种场景, 下面是一个示例.(main中是拷贝自man dlopen中的范例.)
Makefile

all:
    @#动态库编译.
    gcc -Wall -c -o sort_a.o sort_a.c
    gcc -shared -fPIC -o libsorta.so sort_a.o
    @#可执行程序编译.
    gcc -Wall -o sortcall main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值