【发布时间】:2020-12-20 23:30:00
【问题描述】:
我编译的共享库很少,并且依赖项如下 liba.so 不依赖任何东西,libb.so 依赖于 liba.so,libc.so 依赖于 liba.so,libd.so 依赖于 liba.so、libb.so、libc.so
我在图书馆 b-d 上运行 ldd 并得到了这个:
libb.so:
...some system/installed libs...
liba.so => ./ext/lib/liba.so
...some more system/installed libs...
libc.so:
...some system/installed libs...
liba.so => ./ext/lib/liba.so
...some more system/installed libs...
libd.so:
...some system/installed libs...
libc.so => ./ext/lib/libc.so
libb.so => ./ext/lib/libb.so
liba.so => ./ext/lib/liba.so
...some more system/installed libs...
现在,当我尝试在 python 中导入 libd 时,我收到类似的错误
OSError: ./lib/libd.so: undefined symbol: function_from_libb
我已经阅读了此类问题的其他一些答案,他们建议使用 ctypes.RTLD_GLOBAL 或确保正确设置 LD_LIBRARY_PATH env var,但这些都没有产生任何影响。当我尝试使用 CDLL 导入 liba、libb、libc 时,它工作得很好,那么导致这种情况的 libd 有什么不同?
【问题讨论】:
-
如何导入?检查 strace 它加载了哪些库。另外:stackoverflow.com/questions/58610333/….
标签: ctypes