[英]Loading shared object to specific processes in Linux
我想将共享的 object 加载到某些进程中,需要满足某些条件
在 Linux 上支持此功能的可用方法是什么?
可以用“/etc/ld.so.preload”或“LD_PRELOAD=/my/lib.so”来完成吗? 是否需要 kernel 模块?
LD_PRELOAD可用于加载特定的通用微型库,该库将通过dlopen()
服务加载进程所需的任何其他库。 通常,应用程序能够加载插件、查看特定目录并调用dlopen()
以获取在其中找到的所有库文件。
您需要在通用库中定义一个入口点,该入口点将在加载时触发。 使用gcc
您可以使用构造函数属性定义此入口点:
void __attribute__ ((constructor)) lib_initialize(void);
void lib_initialize(void)
{
// Look into a specific directory to see if there are libs to
// load with dlopen()
}
这种机制不需要任何特定的 kernel 模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.