Linux 嵌入式中动态库加载

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

步骤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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值