linux - 从内存中卸载共享库

标签 linux shared-libraries

我正在尝试在 Linux 上修改此共享库(带有 .so)扩展名。我插入一些printf语句和fprintf语句进行调试,但没有效果。我删除了 .so 文件并意识到该程序仍然可以正常运行。这是否意味着程序已加载到内存中? (但我确定只有我正在测试的程序使用那个 .so 文件)

我如何让它卸载以确保我的程序正在加载修改后的程序?

最佳答案

不,共享库不缓存在内存中。如果您删除了 .so 文件并且您的程序仍在运行,则:

  • 程序正在从不同位置加载同名的.so,或者
  • 程序无需加载.so即可运行

如果 .so 应该在程序启动时加载,那么您可以使用 ldd 找出您的操作系统认为 .so实际上是。

如果 .so 在运行时动态加载,那么也许 strace 能够帮助查明正在发生的事情。

关于linux - 从内存中卸载共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11606235/

相关文章:

c - 共享库如何链接到符号?

c# - MonoDroid 和 MonoTouch 的共享库

c++ - Makefile 不评估 OBJECTS 变量

c - 如何在 Linux 上检查进程的堆大小

linux - 如何在 Windows 和 OS X 上的端口 80 上运行 Vagrant Apache

c - (xlib) 为窗口管理器创建我自己的属性

将共享库编译成程序?

linux - RabbitVCS GUI 不出现

linux - 我如何查看 linux 内核 SNMP 计数器?

c++ - 加载自定义 dll + 自定义应用程序失败并显示 : error while loading shared libraries