Pau*_*aul 8 symbols shared-libraries static-variables segmentation-fault dlopen
有谁知道为什么在dlopen()中初始化的库会初始化主程序拥有的静态变量.主程序和共享库都有静态变量的副本,但由于某种原因,共享库重新初始化主程序的静态变量副本并对其进行破坏,在主程序试图破坏它时导致段错误.
这是在符号表中出现错误名称的情况吗?
R S*_*hko 7
这种情况是运行时链接程序只需要进程中符号的单个活动副本.如果共享对象和可执行文件都具有该符号的副本,则运行时链接程序将解析对其中一个的所有引用.
解决此问题的方法是在构建共享对象时使用链接编辑器的version命令进行符号缩减.确保静态变量的符号不是全局的,您将获得所需的行为.
归档时间:
15 年,7 月 前
查看次数:
4928 次
最近记录: