首页 > 解决方案 > 如何检测python ctypes加载的共享对象

问题描述

我需要将共享对象复制到一个包中进行分发。到此为止, ldd 就足够了。

我现在遇到了https://github.com/emcconville/wand/blob/master/wand/api.py,它使用了 ldd 未检测到的 ctypes。

如何检测加载了哪些共享对象以便复制它们?

标签: pythonshared-librariesctypes

解决方案


一般没有办法做到这一点。考虑一个程序ctypes.util.find_library(sys.argv[1])。您不可能提前知道它将尝试加载哪些库。

在您的特定情况下,您应该能够通过包装ctypes记录它在执行期间加载的所有库来解决这个问题。但是请注意,这仅在您的执行加载了它在任何执行时需要的所有库时才有效,因此请确保您点击了所有相关的代码路径。


推荐阅读