LINUX加载静态库so,取得函数地址并调用

简介: LINUX加载静态库so,取得函数地址并调用

示例如下:

#include <stdio.h>  
#include <stdlib.h>  
#include <dlfcn.h>  
#include <signal.h>  
#include <errno.h> 
#define SO_FILE "test.so"
typedef int (*FUN_CALL)(int, int);  
int main(const int argc, const char** argv)
{
    void *pLib    = NULL;
    FUN_CALL call = NULL;  
    plib = dlopen(SO_FILE, RTLD_NOW | RTLD_GLOBAL);  
    if ( NULL == plib )
    {
        printf("%s\n", dlerror());
        return -1;
    }
    call = dlsym(pLib , "call");  
    if ( NULL == call)  
    {
        //ERROR
        return -1;
    }
    call(0, 1);
  //养成良好习惯
   dlclose(pLib);
}
目录
相关文章
|
8天前
|
网络协议 Linux 开发工具
linux系统配置固定地址
linux系统配置固定地址
|
1月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
40 6
|
1月前
|
Linux Shell
Linux系统编程:掌握popen函数的使用
记得在使用完 `popen`打开的流后,总是使用 `pclose`来正确关闭它,并回收资源。这种做法符合良好的编程习惯,有助于保持程序的健壮性和稳定性。
80 3
|
2月前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
100 1
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
|
1月前
|
Linux
在Linux内核中根据函数指针输出函数名称
在Linux内核中根据函数指针输出函数名称
|
2月前
|
Linux PHP
Linux CentOS 宝塔 Suhosin禁用php5.6版本eval函数详细图文教程
【8月更文挑战第27天】本文介绍两种禁用PHP执行的方法:使用`PHP_diseval_extension`禁用和通过`suhosin`禁用。由于`suhosin`不支持PHP8,仅适用于PHP7及以下版本,若服务器安装了PHP5.6,则需对应安装`suhosin-0.9.38`版本。文章提供了详细的安装步骤,并强调了宝塔环境下与普通环境下的PHP路径差异。安装完成后,在`php.ini`中添加`suhosin.so`扩展并设置`executor.disable_eval = on`以禁用执行功能。最后通过测试代码验证是否成功禁用,并重启`php-fpm`服务生效。
30 2
|
2月前
|
NoSQL Linux Android开发
内核实验(三):编写简单Linux内核模块,使用Qemu加载ko做测试
本文介绍了如何在QEMU中挂载虚拟分区、创建和编译简单的Linux内核模块,并在QEMU虚拟机中加载和测试这些内核模块,包括创建虚拟分区、编写内核模块代码、编译、部署以及在QEMU中的加载和测试过程。
132 0
内核实验(三):编写简单Linux内核模块,使用Qemu加载ko做测试
|
2月前
|
Shell Linux C语言
Linux0.11 execve函数(六)
Linux0.11 execve函数(六)
23 1
|
2月前
|
Linux
Linux0.11 文件打开open函数(五)
Linux0.11 文件打开open函数(五)
41 0
|
2月前
|
存储 Linux 调度
Linux 0.11 fork 函数(二)
Linux 0.11 fork 函数(二)
29 0