我收到了一个已经加载的共享库的意外加载。
我有一个二进制文件(test_bin),它应该加载一个共享库(libtest.so)。 另外,我有一个C python扩展模块(extension.so),它也加载了libtest.so
现在,当我使用嵌入式python解释器启动二进制文件并导入扩展模块时,由于库中的静态全局变量被初始化两次,我发生了很多错误。
我的问题是,在这种情况下,为什么在扩展导入期间加载libtest.so,即使它已经被二进制文件加载(已经用lsof确认了)
注意:二进制文件和python扩展使用的共享库的版本,名称和位置都相同(由ldd验证)
调用:
./test_bin
In [1]: from some.location import extension
# errors due to double initialization
如果您需要任何其他信息,请与我们联系