百度
360搜索
搜狗搜索

linux动态库会被多次加载吗详细介绍

在 Linux 系统里,动态库是否会被多次加载取决于具体情形。下面为你详细介绍:

同一进程内

在同一个进程中,动态库通常仅会被加载一次。当进程首次调用dlopen函数(用于加载动态库)或者在程序启动时链接动态库,系统会将动态库加载到内存里,同时为其创建一个副本,之后该进程内的所有代码都会共享这个副本。即便后续再次调用dlopen尝试加载相同的动态库,系统也不会再次把该库加载到内存中,而是直接返回已加载库的句柄。

下面是一个简单示例,借助dlopen函数来加载动态库:
c

 

handle1 RTLD_LAZY

handle1

handle2 RTLD_LAZY

handle2

handle1 handle2

handle1

handle2

在这个示例中,尽管调用了两次dlopen来加载相同的动态库libexample.so,但实际上该库仅被加载了一次,两次调用返回的句柄是相同的。

不同进程间

不同进程加载动态库时,每个进程都会独立地将动态库加载到自身的地址空间中。也就是说,每个进程都有一份动态库的副本,各个进程间的副本互不干扰。

总结

  • 同一进程内,动态库一般仅加载一次,所有代码共享该副本。
  • 不同进程间,每个进程都会独立加载动态库,各自拥有一份副本。

阅读更多 >>>  赤峰大数据怎么没星了
上一篇: 下一篇:

文章数据信息:

本文主要探讨:"linux动态库会被多次加载吗", 浏览人数已经达到34次, 首屏加载时间:1.382 秒。