文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>简单的动态链接程序示例

简单的动态链接程序示例

时间:2006-04-23  来源:oliliango

    在linux平台上(其实不一定要是linux,有gcc的地方,或者支持posix的×nix系统都可以吧),动态链接的一个小的示例程序如下:

#include <dlfcn.h>
#define SO_PATH_NAME "/lib/libc-2.3.5.so"
int main()
{
    void (*my_printf)(const char*,char *,void *);
    void *handle=dlopen(SO_PATH_NAME ,RTLD_LAZY);
    my_printf=dlsym(handle,"printf");
    my_printf("printf() 's address in %s is: 0x%x\n",SO_PATH_NAME,my_printf);
    dlclose(handle);
    return 0;
}

    这里是示例调用了系统中的libc这个动态链接库中的函数。
    唯一需要注意的是:编译的时候加上“-ldl”这个标志,这样才能成功找到dlopen,dlsym,dlclose这三个关键函数。

    注:在《Computer System-A Programmer's Perspective》里面看到还有加个“-rdynamic”的标志。我测试的结果,此处dlopen的时候加上了RTLD_LAZY参数,编译的时 候没有加“-rdynamic”标志,结果似乎和加了之后效果一样。也许是因为这个测试程序比较小,效果不明显吧。

    也可以自己编自己的动态库。编译动态库的时候,加上“-shared”标志就可以了。

    嘿嘿,存此备忘。

   
相关阅读 更多 +
排行榜 更多 +
终极街头格斗

终极街头格斗

休闲益智 下载
大炮轰飞机

大炮轰飞机

飞行射击 下载
像素打僵尸

像素打僵尸

飞行射击 下载