骑驴的柒零

骑驴的柒零

Linux & UNIX 共享库 二

Linux & UNIX 共享库 二

@@ Tags: Linux;动态库 @@ Date: 2023-10-14 2126 动态加载共享库 当一个可执行文件开始运行之后,动态链接器会加载程序的动态依赖列表中的所有共享库,但有些时候延迟加载库是比较有用的,如只在需要的时候再加载一个插件。 这项功能由dlopen API实现,使得程序能够在运行时打开一个共享库,根据名字在库中搜索一个函数,然后调用这个函数。 * void *dlopen(const char *filename, int flags); * 函数打开一个共享库,返回一个供后续调用使用的句柄。 * flags 必须包含RTLD_LAZY、RTLD_NOW之一,以及零个或任意个其他标志位的组合。 * RTLD_LAZY Since glibc 2.1.1 * 惰性绑定,表示只有在引用符号的代码被执行的时候才解析符号,这只发生在函数引用,针对变量的引用则总是在库加载时立即绑定的。 * 如果LD_BIND_NOW环境变量存在时,则会忽略该标志位。
骑驴的柒零