Linux 嵌入式中动态库加载

本文介绍了在嵌入式项目中如何使用dlopen函数以RTLD_LAZY|RTLD_GLOBAL模式加载动态库,然后通过dlsym获取函数指针,最后利用dlclose卸载库。此过程对于动态链接和运行时加载功能至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录嵌入式项目中实际用到的动态库加载方法

步骤1:dlopen函数     以RTLD_LAZY | RTLD_GLOBAL方式打开动态库(指定路径下.so文件)
       void * dlopen(char *fileName, int mode);将其加载到内存中,并返回动态库操作句柄
        --fileName  动态库文件名(含路径)

        --mode 加载模式,RTLD_LAZY 暂缓决定,等有需要时再解出符号, RTLD_NOW 立即决定,返回前解除所有未决定的符号

void *handle = null ;
handle = dlopen("/program/lib/123.so", RTLD_LAZY | RTLD_GLOBAL)
if(null == handle )
{
    //动态库加载失败
}


步骤2:dlsym函数     从动态库中获取具体函数名或者变量名的指针(具体的函数名称)
             void *dlsym(void *handle, char *fucName);返回获取的函数地址

              --动态库操作句柄,dlopen函数的返回值

              --fucName 函数名
        

void *funProc= null ;
funProc= dlsym(handle, "main_init")
if(null == funProc)
{
    //获取函数名失败
}


步骤3:dlclose     取消加载动态库函数(具体的函数名称)
              int dlclose(void *handle);返回值为操作结果


dlclose(handle)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值