我有一些C++代码,内部使用多个第三方库。代码编译良好,但在执行过程中无法加载某些共享库(libintbasic.so)。考虑到这种情况,我无法在系统中安装任何库,唯一的出路是找到哪个函数调用该库。我怎么能找到谁叫这个库(我的代码不直接调用这个库)。如何查找谁在调用共享库函数?
1
A
回答
0
1
我不能任何库安装到系统中,
这似乎是一个虚假的要求:明确您可以将二进制文件复制到系统中。将其他库安装到同一个目录并不困难。
我怎么能发现谁在呼叫该库
有两种情况考虑:
- 二进制文件或库之一,它直接链接到链接
libintbasic.so
。您的二进制文件不会运行或 - 您的二进制文件或与其直接链接的库之一调用
dlopen("libintbasic.so",...)
,并且在dlopen
失败时失败。
通过设置LD_DEBUG=files,libs
来调试第一个案例通常是最容易的。动态加载器会告诉你哪些库正在被加载,以及为什么需要它们。
调试第二种情况是容易gdb
:设置dlopen
断点,并执行每次命中断点时where
和info shared
命令。
相关问题
- 1. 在JNI共享库中查找函数?
- 2. 如何从共享库调用函数?
- 3. 如何从共享库调用函数
- 4. 找出函数是否在共享库中调用
- 5. 如何在共享库中使用Lua调用函数
- 6. 从共享库中调用函数
- 7. 如何在Go中调用Linux共享库函数?
- 8. 查找共享库libOS.so
- 9. Google云端硬盘 - 如何查找文档与谁共享?
- 10. 如何在程序中检查共享库暴露函数
- 11. 如何检查谁在使用共享文件
- 12. 如何从asp.net中的公共共享函数调用公共函数?
- 13. 如何使用CMake指定在哪里查找共享库?
- 14. 函数在一个共享库中调用另一个共享库中的函数
- 15. VB网络:如何调用这个公共共享函数?
- 16. 共享库函数没有在lolipop中调用
- 17. 调用@plt函数时在dlopen/static init上共享库SIGSEGV
- 18. 如何使用LLVM API在函数中找出共享变量?
- 19. 如何查看Linux共享库导出的函数列表?
- 20. 如何查询谁在Windows上共享端口80?
- 21. 如何使用共享库函数在gdb中设置断点
- 22. 如何检查谁在PHP中调用函数?
- 23. 如何调用函数在共享服务 - SailsJS
- 24. 共享库(.so)如何调用在其加载程序中实现的函数?
- 25. 不调用共享构造函数的共享方法
- 26. 从Ruby调用共享库
- 27. Facebook - 检查谁共享链接
- 28. 调用共享.so中的函数C
- 29. sprof如何找到我的共享库
- 30. 如何调用其名称作为参数的共享函数
使用调试器查找导致调用的行。 – user2079303
你可能想要添加“linux”标签 –