主程序和共享库中初始化同__static_initialization_and_destruction_0静态变量
-
26-09-2019 - |
题
有谁知道为什么()的dlopen内初始化的库将初始化由主程序拥有一个静态变量。无论是主程序和共享库有静态变量的副本,但由于某些原因的共享库重新初始化静态变量的主程序的复制和自毁它,导致段错误当主程序企图进行破坏。
这是不好的名称在符号表中重整的情况?
解决方案
这是在运行时链接只希望在处理的符号的一个单一的主动副本的情况。如果两个共享对象和可执行具有符号的副本,运行时链接将解决所有引用的那些中的一个。
你能做些什么来解决这个问题,使用的构建共享对象时,链接编辑器的版本命令。确保了静态变量的符号不是全球,你会得到你正在寻找的行为。
不隶属于 StackOverflow