【发布时间】:2010-06-18 06:10:30
【问题描述】:
如何更改函数在运行时加载的库?
例如,假设我想用新的东西替换标准的printf函数,我可以编写自己的版本并将其编译到共享库中,然后将“LD_PRELOAD=/my/library.so”放入环境中在运行我的可执行文件之前。
但是让我们说,相反,我想从程序本身更改该链接。这肯定是可能的……对吧?
编辑
不,以下内容不起作用(但如果你能告诉我如何让它工作,那就足够了)。
void* mylib = dlopen("/path/to/library.so",RTLD_NOW);
printf = dlsym(mylib,"printf");
【问题讨论】:
标签: c linux shared-libraries